[英]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
我想對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
(我將(0,2)和(3,6)行的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
和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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.