簡體   English   中英

簡化 pandas groupby().agg() 的代碼

[英]simplify codes for pandas groupby().agg()

我有一個 dataframe 我正在嘗試分組並獲取多列的總和,為此我有以下代碼:

df=df.groupby(['year','month']).agg({'A':['sum'],'B':['sum'],'C':['sum'],'D':['sum']})

有沒有辦法可以更改 agg() 中的 arguments 以遍歷列表? 我正在嘗試這樣的事情,但顯然它不起作用。

col=['A','B','C','D']
df=df.groupby(['year','month']).agg({c for c in col})

非常感謝!

你很親密。 請注意,您正在向agg()傳遞一個集合,而不是字典。 字典有一對key: value你只有一個value

df=df.groupby(['year','month']).agg({c: ['sum'] for c in df.columns})

因為:

{c: ['sum'] for c in df.columns}
>>> {'A':['sum'],'B':['sum'],'C':['sum'],'D':['sum']}

與你寫的相反:

{c for c in df.columns}  # you iterated over cols, probably forgot cols=df.columns before. Changed it to df.columns here
>>> {'A', 'B', 'C', 'D'}

編輯:我還假設您對匯總所有列不感興趣,只有“A”到“D”。 如果這實際上是您的意圖,就像您問題下的其他評論中所述,您可以這樣做:

df.groupby(['year','month']).sum()

或者

df.groupby(['year','month']).agg('sum')

暫無
暫無

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

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