У меня есть этот фрейм данных
df1 = pd.DataFrame({'A': ['A0', 'A0', 'A1', 'A1','A0', 'A0', 'A1', 'A1', 'A0', 'A0', 'A1', 'A1'],
'B': [1, 2, 3, 3, 4, 5, 6, 7, 8, 9, 10, 11],
'C': [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11],
'i': [1, 1, 1, 1,2, 2, 2, 2, 3, 3, 3, 3]},
)
A B C i
0 A0 1 0 1
1 A0 2 1 1
2 A1 3 2 1
3 A1 3 3 1
4 A0 4 4 2
5 A0 5 5 2
6 A1 6 6 2
7 A1 7 7 2
8 A0 8 8 3
9 A0 9 9 3
10 A1 10 10 3
11 A1 11 11 3
Я хотел сгруппировать по A
и i
:
df1.set_index(['A', 'i'], inplace=True)
df1.groupby(df1.index).sum()
B C
(A0, 1) 3 1
(A0, 2) 9 9
(A0, 3) 17 17
(A1, 1) 6 5
(A1, 2) 13 13
(A1, 3) 21 21
Но я хочу, чтобы результат (A0,2)
был сумма (A0,1)
и (A0,2)
, а (A0,3)
- сумма (A0,1)
, (A0,2)
и (A0,3)
и то же самое с A1
, я знаю, что могу сделать это с помощью oop но я ищу лучшее решение, так как мой DataFrame больше этого. Таблица результатов, которую я хочу, это
B C
(A0, 1) 3 1
(A0, 2) 12 10
(A0, 3) 29 27
(A1, 1) 6 5
(A1, 2) 19 18
(A1, 3) 40 39