簡體   English   中英

groupby.apply僅適用於部分列

[英]groupby.apply apply only to a part of the columns

我正在嘗試對數據框執行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

(我將(0,2)和(3,6)行的ce列中的值相加)

我嘗試了以下方法:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM