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

如何批量计算两个DataFrame中各REF分组的数值百分比差异?

批量计算多REF的月度百分比差异

核心思路

先分别对两个月的数据按REF分组求和,合并后统一计算百分比差异,一次性处理所有REF,无需逐个操作。


具体实现步骤

1. 分组求和月度数据

先把9月(df1)和10月(df2)的数据按REF分组,计算每个REF的月度总值:

import pandas as pd
import numpy as np

# 9月数据分组求和
df1_sum = df1.groupby('REF')['value'].sum().reset_index(name='sep_value')
# 10月数据分组求和
df2_sum = df2.groupby('REF')['value'].sum().reset_index(name='oct_value')

2. 合并月度汇总表

按REF合并两个汇总表,用outer连接确保所有REF都被包含,缺失值填充为0避免计算报错:

merged_df = pd.merge(df1_sum, df2_sum, on='REF', how='outer').fillna(0)

3. 计算百分比差异

用np.where处理分母为0的特殊情况,百分比差异公式为((10月值-9月值)/9月值)*100:

merged_df['pct_diff'] = np.where(
    merged_df['sep_value'] == 0,
    # 9月值为0时,若10月也为0则差异为0,否则标记为无穷大(可按需调整)
    np.where(merged_df['oct_value'] == 0, 0, np.inf),
    ((merged_df['oct_value'] - merged_df['sep_value']) / merged_df['sep_value']) * 100
)

4. 格式化输出指定格式

把结果整理成REF名称 百分比的格式,保留两位小数:

merged_df['formatted_result'] = merged_df.apply(
    lambda row: f"{row['REF']} {row['pct_diff']:.2f}%",
    axis=1
)

# 打印所有结果
print('\n'.join(merged_df['formatted_result']))

完整模拟示例

假设你的数据结构如下,运行代码即可得到目标输出:

# 模拟测试数据
df1 = pd.DataFrame({
    'REF': ['REF1', 'REF1', 'REF2', 'REF3'],
    'value': [100, 200, 500, 300]
})
df2 = pd.DataFrame({
    'REF': ['REF1', 'REF2', 'REF2', 'REF3'],
    'value': [300, 501.55, 0, 290]
})

# 执行上述步骤
df1_sum = df1.groupby('REF')['value'].sum().reset_index(name='sep_value')
df2_sum = df2.groupby('REF')['value'].sum().reset_index(name='oct_value')
merged_df = pd.merge(df1_sum, df2_sum, on='REF', how='outer').fillna(0)

merged_df['pct_diff'] = np.where(
    merged_df['sep_value'] == 0,
    np.where(merged_df['oct_value'] == 0, 0, np.inf),
    ((merged_df['oct_value'] - merged_df['sep_value']) / merged_df['sep_value']) * 100
)

merged_df['formatted_result'] = merged_df.apply(
    lambda row: f"{row['REF']} {row['pct_diff']:.2f}%",
    axis=1
)

print('\n'.join(merged_df['formatted_result']))

输出结果:

REF1 0.00%
REF2 0.31%
REF3 -3.33%

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 11:50:24