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

如何使用Python Pandas将分周期年度数据合并为完整年度数据?

用Pandas合并季度周期数据为年度数据

核心思路

你的数据集按季度拆分(JAN THRU MAR这类周期),要得到完整年度数据,核心是按Year列分组,对其他特征列进行聚合计算。如果需要处理日期范围,先修正你现有代码的问题,再结合分组逻辑实现。

修正你的代码问题

你当前代码存在两个明显问题:

  1. split('THRU')后得到的月份字符串带空格,需要用strip()去除前后空白
  2. 变量名错误:start_month/end_month应为start_mo/end_mo

修正后的日期处理函数示例:

import pandas as pd

months = ['JAN', 'FEB', 'MAR', 'APR', 'MAY', 'JUN', 'JUL', 'AUG', 'SEP', 'OCT', 'NOV', 'DEC']

def process_period(row):
    period = row['Period'].strip()
    year = row['Year']
    # 拆分并清理月份字符串
    start_mo, end_mo = [mo.strip() for mo in period.split('THRU')]
    # 转换为年度的起始/结束日期(直接取全年范围)
    annual_start = pd.to_datetime(f'{year}-01-01')
    annual_end = pd.to_datetime(f'{year}-12-31')
    return pd.Series([annual_start, annual_end], index=['Annual_Start', 'Annual_End'])

# 给原数据添加年度日期列
df[['Annual_Start', 'Annual_End']] = df.apply(process_period, axis=1)

合并为年度数据的完整实现

根据你的特征列类型选择对应聚合方式:

  1. 数值型特征:用sum/mean/max等聚合函数
  2. 类别型特征:用', '.join合并所有周期,或mode()取众数

示例代码:

# 按Year分组聚合,替换为你的实际特征列
annual_df = df.groupby('Year').agg(
    # 数值列示例:求和、取平均
    Revenue='sum',
    Average_Users='mean',
    # 周期列:合并所有季度描述
    Periods=('Period', ', '.join),
    # 日期列:取该年度的起始/结束日期
    Annual_Start=('Annual_Start', 'first'),
    Annual_End=('Annual_End', 'first')
).reset_index()

# 查看结果
print(annual_df)

简化版(无需日期处理)

如果不需要日期范围,直接分组聚合即可:

annual_df = df.groupby('Year').agg({
    'Feature1': 'sum',
    'Feature2': 'mean',
    'Period': lambda x: ', '.join(x)
}).reset_index()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 07:26:08