我有一个看起来像这样的数据框
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()
答案 0 :(得分:1)
您可以将agg
与max
和sum
一起使用。列'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