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

如何使用pandas对DataFrame按分组计算指标环比百分比变化

Pandas按分组计算环比百分比实现方案

核心逻辑

使用groupby对FN字段分组后,调用pandas内置的pct_change()方法直接计算组内AuM的环比变化率,最后将首行空值替换为符合要求的空字符串即可。

完整可运行代码

import pandas as pd

# 构造示例输入df1
lst = [['01012021','A',10],['01012021','B',20],['01012021','A',12],['01012021','B',23]]
df1 = pd.DataFrame(lst, columns=['Date','FN','AuM'])

# 按FN分组计算环比变化率
df1['%_delta'] = df1.groupby('FN')['AuM'].pct_change()

# 将首行的空值替换为空白字符串,匹配预期输出格式
df1['%_delta'] = df1['%_delta'].fillna('')

# 得到目标df2
df2 = df1.copy()

注意事项

  • 正式使用时如果你的数据需要按日期顺序计算环比,请先对每个FN分组内的Date字段做升序排序,避免数据顺序错误导致计算结果不准,排序代码参考:
    # 先将日期字符串转为datetime类型避免排序错误
    df1['Date'] = pd.to_datetime(df1['Date'], format='%d%m%Y')
    df1 = df1.sort_values(by=['FN', 'Date'], ascending=True)
    
  • 如果需要输出带百分号的格式,可以修改赋值逻辑:
    df1['%_delta'] = df1.groupby('FN')['AuM'].pct_change().apply(lambda x: f"{x:.2%}" if pd.notna(x) else "")
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 00:45:04