【发布时间】:2020-01-24 12:31:04
【问题描述】:
我有这个数据框
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,我知道我可以通过循环来完成,但我正在寻找更好的解决方案,因为我的 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
【问题讨论】:
标签: python python-3.x pandas dataframe pandas-groupby