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

如何在季度数据集上按Item计算全指标的环比差值?

计算分组环比差值的最优方案

你的核心需求是按items分组,对每个分组内的所有metric计算环比差值,直接用df.diff()会混淆不同item的周期数据,所以必须结合分组逻辑处理,以下是高效简洁的实现方案:

步骤1:规范数据顺序

先把period转为日期格式,再按items和period排序,保证每个item的周期是时间递增顺序:

import pandas as pd

df['period'] = pd.to_datetime(df['period'])
df = df.sort_values(['items', 'period']).reset_index(drop=True)

步骤2:批量计算分组环比差值

利用groupby配合diff(),一次性处理所有metric列,生成对应的差值列:

# 自动筛选所有metric列(如果列名有固定规律,比如包含'metric')
metric_cols = [col for col in df.columns if 'metric' in col]
# 分组计算环比差值,新增列命名为`diff_原列名`
df[[f'diff_{col}' for col in metric_cols]] = df.groupby('items')[metric_cols].diff()

可选:计算环比增长率

如果需要的是增长率((当期值-上期值)/上期值),把diff()替换为pct_change()即可:

df[[f'pct_{col}' for col in metric_cols]] = df.groupby('items')[metric_cols].pct_change() * 100

方案优势

  • 原生pandas方法,性能高效,处理30个metric毫无压力,远快于循环遍历
  • 代码简洁,无需额外复杂逻辑,自动保留原数据结构
  • 第一个周期因无前置数据会显示NaN,符合业务逻辑

处理后示例结果

idxitemsperiodmetric 1metric 2diff_metric 1diff_metric 2
0Item A2022-12-3168100NaNNaN
1Item A2023-06-3072994.0-1.0
2Item A2023-09-30889816.0-1.0
3Item B2022-12-3113100NaNNaN
4Item B2023-06-30689055.0-10.0
5Item B2023-09-305080-18.0-10.0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 22:19:51