簡體   English   中英

使用 Pandas NamedAgg 按多列分組和聚合

[英]Group and aggregate by multiple columns using Pandas NamedAgg

我有一個按日期排列的列的數據框。 這些列是一年多以來每天讀取的讀數。 我正在嘗試匯總和分組這些數據以顯示季度匯總數字。 我發現大熊貓 namedagg 可能支持這一點,但我正在努力傳遞多個列名並應用單個聚合函數。

我的示例數據集,顯示了 2020 年到 2021 年之間每天按日期排列的城市、郵編和其余列

在此處輸入圖片說明

這是我想要實現的目標,下面給出了我通過將多列傳遞給 NamedAgg 方法所嘗試的示例,但它似乎不接受它:

df.groupby(['city','zip']).agg(
  2021_q1=pd.NamedAgg(column=df.columns[1:89].values.tolist(),aggfunc=sum),
  2021_q2=pd.NamedAgg(column=df.columns[90:180].values.tolist(),aggfunc=sum),
  2021_q3=pd.NamedAgg(column=df.columns[181:240].values.tolist(),aggfunc=sum),
  2021_q4=pd.NamedAgg(column=df.columns[241:380].values.tolist(),aggfunc=sum),
  2022_q1=pd.NamedAgg(column=df.columns[381:450].values.tolist(),aggfunc=sum),
)

我收到錯誤

類型錯誤:不可散列的類型:“列表”

是否有另一種方式我應該傳遞我想要聚合的列列表,或者請建議是否有更好的方法來按季度數字聚合我的數據集

將非日期列轉換為索引,將列轉換為日期時間,然后通過DatetimeIndex.to_period聚合轉換為季度周期的值:

df = df.set_index(['city','zip'])

df.columns = pd.to_datetime(df.columns)

df1 = df.groupby(df.columns.to_period('Q'), axis=1).sum()

暫無
暫無

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

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