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

如何将DataFrame的月度列自动汇总为季度列和年度列?

Pandas自动汇总月度列生成季度/年度列

先构造可复现的示例数据:

import pandas as pd

data = {
    '201003': [10, 14],
    '201004': [11, 19],
    '201005': [14, 20],
    '201006': [22, 22],
    '201007': [10, 26],
    '201008': [19, 11]
}
df = pd.DataFrame(data, index=['A', 'B'])

步骤1:将列名转换为时间格式

把YYYYMM格式的列名转成时间对象,才能按季度/年份自动分组:

# 复制原数据避免修改原始列名
temp_df = df.copy()
temp_df.columns = pd.to_datetime(temp_df.columns, format='%Y%m')

步骤2:生成季度汇总列

按季度分组求和,自动匹配所有时间范围的季度:

quarterly_sum = temp_df.groupby(temp_df.columns.to_period('Q'), axis=1).sum()
# 将季度格式转为'YYYYQX'的字符串(比如2010Q2)
quarterly_sum.columns = quarterly_sum.columns.astype(str)

步骤3:生成年度汇总列

按年份分组求和,自动覆盖所有存在的年份:

yearly_sum = temp_df.groupby(temp_df.columns.year, axis=1).sum()
# 将年份转为带标识的字符串(比如'2010年',也可以直接用str(year))
yearly_sum.columns = [f"{year}年" for year in yearly_sum.columns]

步骤4:合并到原DataFrame

把汇总列添加到原数据的右侧:

result_df = pd.concat([df, quarterly_sum, yearly_sum], axis=1)

最终输出的result_df会保留原月度列,同时新增季度和年度汇总列,完全不需要手动指定具体列名,不管你的时间范围是201003-201008还是201006-201303,都能自动适配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 12:03:20