我正在尝试对数据帧执行 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
和e
求和得到:
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
列中的值相加,并在第 (0,2( 和 (3,6( 行中对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
和 d
求和的地方,而我希望它们保持原样。如何避免将总和应用于我分组依据的列?
指出哪些列需要求和,应该解决问题
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