groupby.apply仅适用于部分列

时间:2018-03-13 16:36:48

标签: python pandas pandas-groupby

我尝试在数据框上执行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

我希望通过abc进行分组(将所有三列相同的所有行分组),然后对列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 ab列中的值也总和,而我希望它们保持原样。如何避免将总和应用于我按<?p>分组的列

1 个答案:

答案 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