You need to enable JavaScript to run this app. 如何使用Pandas按行计算同分组跨年份的指标百分比增长
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Pandas按行计算同分组跨年份的指标百分比增长

Pandas 分组追加增长率行实现方案

核心逻辑:按Col1维度分组,利用pandas内置函数计算相邻年份的同比增长率,将结果调整为和原表结构匹配的行后拼接至原表末尾。

实现步骤

  • 构建原始样本DataFrame,对齐给定的字段和数据结构:
import pandas as pd
data = {
    "Col1": ["A", "A", "B", "B", "C", "C"],
    "Col2": [2019, 2020, 2019, 2020, 2019, 2020],
    "Jan": [100, 200, 10, 20, 1000, 2000],
    "Feb": [200, 300, 20, 30, 2000, 3000],
    "Mrz": [300, 400, 30, 40, 3000, 4000],
    "Total": [600, 900, 60, 90, 6000, 9000]
}
df = pd.DataFrame(data)
  • 计算各分组同比增长率:
    利用pandas内置的pct_change函数计算组内相邻行的环比值,因每个分组内2019年数据在前、2020年数据在后,直接取每组最后一行的计算结果即为目标增长率,乘100后取整对齐示例输出格式:
# 按Col1分组计算增长率
growth_calc = df.groupby("Col1", as_index=False)[["Jan", "Feb", "Mrz", "Total"]]\
    .pct_change()\
    .groupby(df["Col1"])\
    .last()\
    .mul(100)\
    .round(0)\
    .astype(int)
# 补充Col2固定值、对齐列顺序
growth_calc["Col2"] = "GrowthInPercent"
growth_calc = growth_calc[df.columns]
  • 垂直拼接原表与增长率行,得到最终结果:
final_df = pd.concat([df, growth_calc], ignore_index=True)

结果校验:生成的增长率行完全匹配示例目标值——所有分类的Jan列增长率100、Feb列增长率50、Mrz列增长率33、Total列增长率50,维度字段、列顺序与原表完全一致。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.11 02:54:04