熊猫:以其他列为条件的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()


芜湖不芜
浏览 88回答 1
1回答

尚方宝剑之说

您可以使用agg和max。sum'b' 列上的最大值确实有效,因为 'Y' > 'N' == Trueprint(df.groupby('a', as_index=False).agg({'b': 'max', 'c': 'sum'}))   a  b   c0  A  Y  201  B  Y  172  C  Y  233  D  N  354  E  N  13
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python