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