我尝试在数据框上执行groupby.apply但仅适用于某些列。
我的数据如下:
a b c d e
0 1 1 1 4 9
1 1 2 2 7 0
2 1 1 3 4 7
3 2 1 4 3 3
4 2 2 5 2 8
5 2 3 6 6 3
6 2 1 7 3 6
7 3 2 8 4 4
8 3 3 9 5 2
我希望通过a
,b
和c
进行分组(将所有三列相同的所有行分组),然后对列c
和{进行汇总{1}}获得:
e
(我在行(0,2)和(3,6)中的 a b c d e
0 1 1 4 4 16
1 1 2 2 7 0
2 2 1 11 3 9
3 2 2 5 2 8
4 2 3 6 6 3
5 3 2 8 4 4
6 3 3 9 5 2
和c
列中汇总了值
我尝试了以下内容:
e
但我明白了:
a.groupby(['a','b','d'], as_index = False).apply(sum)
我的问题是, a b c d e
a b d
1 1 4 2 2 4 8 16
2 7 1 2 2 7 0
2 1 3 4 2 11 6 9
2 2 2 2 5 2 8
3 6 2 3 6 6 3
3 2 4 3 2 8 4 4
3 5 3 3 9 5 2
,a
和b
列中的值也总和,而我希望它们保持原样。如何避免将总和应用于我按<?p>分组的列
答案 0 :(得分:2)
指出哪些列需要起诉,应该解决问题
df.groupby(['a','b','d'], as_index = False)['c','e'].sum()
Out[394]:
a b d c e
0 1 1 4 4 16
1 1 2 7 2 0
2 2 1 3 11 9
3 2 2 2 5 8
4 2 3 6 6 3
5 3 2 4 8 4
6 3 3 5 9 2