Во-первых, позвольте мне поставить сцену.Как вычесть один фрейм данных из другого?
я начать с pandas
dataframe klmn
, который выглядит следующим образом:
In [15]: klmn
Out[15]:
K L M N
0 0 a -1.374201 35
1 0 b 1.415697 29
2 0 a 0.233841 18
3 0 b 1.550599 30
4 0 a -0.178370 63
5 0 b -1.235956 42
6 0 a 0.088046 2
7 0 b 0.074238 84
8 1 a 0.469924 44
9 1 b 1.231064 68
10 2 a -0.979462 73
11 2 b 0.322454 97
Далее я разделил klmn
на две dataframes, klmn0
и klmn1
, в соответствии со значением в столбце 'K':
In [16]: k0 = klmn.groupby(klmn['K'] == 0)
In [17]: klmn0, klmn1 = [klmn.ix[k0.indices[tf]] for tf in (True, False)]
In [18]: klmn0, klmn1
Out[18]:
( K L M N
0 0 a -1.374201 35
1 0 b 1.415697 29
2 0 a 0.233841 18
3 0 b 1.550599 30
4 0 a -0.178370 63
5 0 b -1.235956 42
6 0 a 0.088046 2
7 0 b 0.074238 84,
K L M N
8 1 a 0.469924 44
9 1 b 1.231064 68
10 2 a -0.979462 73
11 2 b 0.322454 97)
Наконец, я вычислил среднее значение столбца M
в klmn0
, сгруппированное по значению в L
колонка:
In [19]: m0 = klmn0.groupby('L')['M'].mean(); m0
Out[19]:
L
a -0.307671
b 0.451144
Name: M
Теперь мой вопрос, как я могу вычесть m0
из M
колонки klmn1
югу dataframe, уважая значение в столбце L
? (Под этим я имею в виду, что m0['a']
получает вычитается из M
столбца каждой строки в klmn1
, который имеет 'a'
в L
колонки, а также для m0['b']
.)
Можно представить себе делать это таким образом, что заменяет значения в столбце M
klmn1
с новыми значениями (после вычитания значения от m0
). В качестве альтернативы можно было бы сделать это таким образом, чтобы оставить klmn1
без изменений и вместо этого создает новый информационный фрейм klmn11
с обновленным столбцом M
. Меня интересуют оба подхода.
Кстати, я несчастна с кодом Раньше я делил 'klmn' на' klmn0' и 'klmn1'. В частности, представляется громоздким прибегать к пониманию, повторяющемуся над '(True, False)', чтобы попасть в два суб-dataframes. Есть ли какое-то индексирующее выражение 'klmn [...]' или 'klmn.ix [...]', которое использует объект 'groupby'' k0' непосредственно для извлечения суб-данных? – kjo