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

Python:如何计算DataFrame中不同公司的年度营收同比差值

Python 多公司营收DataFrame计算年度同比差值方案

核心逻辑为按公司维度分组隔离数据,组内按年度排序后对营收值做差分计算,不会出现不同公司数据混算的问题,适配多公司、多科目的大型DataFrame场景。


完整实现代码

1. 依赖导入与数据准备(示例数据可替换为你自己的数据源读取逻辑)

import pandas as pd

# 构造示例数据,包含2家公司的营收数据,验证多公司适配效果
data = {
    'Company': ['A2M']*5 + ['BXX']*4,
    'Acc_Name': ['Sales/Revenue']*9,
    'Date': [2016,2017,2018,2019,2020,2018,2019,2020,2021],
    'Value': [167770000.0, 360842000.0, 68087000.0, 963000000.0, 143346000.0, 100000000, 120000000, 150000000, 195000000]
}
df = pd.DataFrame(data)

2. 核心计算逻辑

# 确保日期列为整数类型,避免字符串排序出现逻辑错误
df['Date'] = df['Date'].astype(int)
# 先按公司、日期升序排序,解决原数据顺序混乱导致的计算错误问题
df = df.sort_values(by=['Company', 'Date'], ignore_index=True)
# 按公司分组,组内计算相邻年度的营收差值,即为年度同比差值
df['YoY_Diff'] = df.groupby('Company')['Value'].diff()

结果说明

  • 每个公司的首个统计年度(无上年数据)对应YoY_Diff列值为NaN,符合业务逻辑
  • 以示例中A2M公司2017年数据为例,计算得到的同比差值为360842000.0 - 167770000.0 = 193072000.0,和预期一致

扩展适配场景

  • 若数据包含多个财务科目(不止营收),只需修改分组逻辑为df.groupby(['Company', 'Acc_Name'])['Value'].diff(),即可实现同公司同科目的同比计算
  • 若需要同步计算同比增长率,可补充以下代码:
df['YoY_Rate'] = df.groupby('Company')['Value'].pct_change()
  • 若存在年度不连续的场景,不想使用隔年数据计算差值,可将日期转为时间索引后按年度重采样,缺失年份自动填充NaN,再做差分计算即可

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

相关产品推荐
方舟 Agent Plan

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

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