熊猫:groupby sum在其他列上有条件

时间:2020-07-01 21:45:35

标签: python pandas pandas-groupby

我有一个看起来像这样的数据框

pd.DataFrame({'a':['A', 'B', 'B', 'C', 'C', 'D', 'D', 'E'],
              'b':['Y', 'Y', 'N', 'Y', 'Y', 'N', 'N', 'N'],
              'c':[20, 5, 12, 8, 15, 10, 25, 13]})

   a  b   c
0  A  Y  20
1  B  Y   5
2  B  N  12
3  C  Y   8
4  C  Y  15
5  D  N  10
6  D  N  25
7  E  N  13

我想对列“ a”进行分组,检查列“ b”中的任何一个是否为“ Y”或True,并保留该值,然后对“ c”求和

结果数据框应如下图所示

   a  b   c
0  A  Y  20
1  B  Y  17
2  C  Y  23
3  D  N  35
4  E  N  13

我尝试了以下操作,但收到错误消息

df.groupby('a')['b'].max()['c'].sum()

1 个答案:

答案 0 :(得分:1)

您可以将aggmaxsum一起使用。列'b'的最大值确实有效,因为'Y'>'N'== True

print(df.groupby('a', as_index=False).agg({'b': 'max', 'c': 'sum'}))

   a  b   c
0  A  Y  20
1  B  Y  17
2  C  Y  23
3  D  N  35
4  E  N  13