Groupby.Apply 仅应用于部分列



我正在尝试对数据帧执行 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分组(对所有三列都相同的所有行进行分组(,然后将列ce求和得到:

   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

我这里的问题是列中的值abd 求和的地方,而我希望它们保持原样。如何避免将总和应用于我分组依据的列?

指出哪些列需要求和,应该解决问题

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

相关内容

  • 没有找到相关文章