簡體   English   中英

pandas:groupby sum 以其他列為條件

[英]pandas: groupby sum conditional on other column

我有一個 dataframe 看起來像這樣

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'求和

生成的 dataframe 應如下所示

   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()

您可以將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

暫無
暫無

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

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