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

Pandas如何为按邮编分组的季度累计值新增环比增量列?

实现Pandas按邮编分组计算季度新增事件数的方法

要计算每个邮编对应季度的新增事件数,核心逻辑是同一邮编分组内,当前季度累计值减去上一季度累计值,第一个季度没有上一季度数据时新增值默认为0。


具体实现方式

方式1:单独为已有DataFrame加New列

首先保证数据按邮编、季度正序排列,再通过分组差分计算新增值:

# 按邮编和季度排序,确保时间顺序正确
df = df.sort_values(['Zipcode', 'Quarter']).reset_index(drop=True)
# 计算新增列
df['New'] = df.groupby('Zipcode')['Cumulative_number'].diff().fillna(0).astype(int)

方式2:嵌入现有链式操作

可以直接把逻辑加到你生成累计值的原有代码中,无需拆分步骤:

df = (df.reindex(pd.date_range(df.columns.min(), until, freq='QS', name='Quarter'), axis=1)
        .ffill(axis=1)
        .stack()
        .astype(int)
        .reset_index(name='Cumulative_number')
        # 新增排序和计算新增列的逻辑即可
        .sort_values(['Zipcode', 'Quarter'])
        .assign(New=lambda x: x.groupby('Zipcode')['Cumulative_number'].diff().fillna(0).astype(int))
     )

补充说明

  • 如果存在累计值统计错误导致环比回落的情况,可以加下限限制避免出现负数新增:
    df['New'] = df.groupby('Zipcode')['Cumulative_number'].diff().fillna(0).clip(lower=0).astype(int)
    
  • 如果你的Quarter字段是字符串格式且排序异常,建议先转为datetime类型再排序,保证时间顺序正确:
    df['Quarter'] = pd.to_datetime(df['Quarter'])
    
  • 注意你给出的原始示例中2000邮编2018 Q4的累计值写为0,属于和预期输出冲突的笔误,实际计算时请保证累计值的正确性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 12:42:01