[英]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.