You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何按年份分组获取Pandas列的汇总统计信息?

解决方案

可以通过groupby结合describe,再调整列结构来实现你的需求,不需要扩展pd.describe()本身,pandas自带的方法就能搞定。

方法一:分步调整结构

  1. 按Year分组并计算描述统计:
stats = dat.groupby('Year')[['ColA', 'ColB']].describe()

这会生成一个带层次化列索引的结果,行对应年份,列的第一层是ColA/ColB,第二层是统计量(如count、mean、std等)。

  1. 转置并重构结构:
# 转置后重置索引,拆分层次化行索引
stats_transposed = stats.T.reset_index()
stats_transposed.columns = ['Column', 'Stat', '2007', '2008']

# 用透视表重新组织数据,让统计量作为行,年份+列名作为列
result = stats_transposed.pivot(index='Stat', columns='Column', values=['2007', '2008'])

# 合并列名,生成"年份_列名"的格式
result.columns = [f'{year}_{col}' for year, col in result.columns]

方法二:紧凑写法(利用索引层级调整)

如果追求代码简洁,可以直接通过stack和unstack调整索引:

stats = dat.groupby('Year')[['ColA', 'ColB']].describe()
result = stats.stack().unstack(0).unstack(0)
result.columns = [f'{year}_{col}' for year, col in result.columns]

最终result的行是各类统计量,列则是2007_ColA、2007_ColB、2008_ColA、2008_ColB,完全匹配你想要的输出格式。如果数据包含更多年份,代码会自动适配,无需手动修改年份参数。

内容的提问来源于stack exchange,提问作者324

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 04:30:57