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

如何用Python Pandas编写函数遍历多DataFrame并按条件计算结果

批量处理Pandas DataFrame实现时段数值匹配计算

问题背景

需要替代Excel静态的INDEX+MATCH方案,批量处理大规模多日期、多单元的Pandas DataFrame数据:基于Efficiency Quintile匹配两个结构不同的DF(DF1、DF2),将DF1中各时段的数值乘以DF2对应的Efficiency_adjusted_EF系数,最终生成包含MODELLED Rank、BM_Unit及计算后时段值的结果集DF3。

假设数据结构

先明确两个DF的典型结构(可根据实际情况调整字段名):

  • DF1:包含Date、BM_Unit、Efficiency_Quintile,以及Period_1到Period_10等时段数值列
  • DF2:匹配参数表,包含Efficiency_Quintile、Efficiency_adjusted_EF、MODELLED_Rank

实现步骤与代码

import pandas as pd

def calculate_modelled_results(df1, df2):
    # 统一匹配键数据类型,避免关联失败
    df1['Efficiency_Quintile'] = df1['Efficiency_Quintile'].astype(str)
    df2['Efficiency_Quintile'] = df2['Efficiency_Quintile'].astype(str)
    
    # 关联两个DF,获取调整系数和MODELLED Rank
    merged_df = pd.merge(
        df1,
        df2[['Efficiency_Quintile', 'Efficiency_adjusted_EF', 'MODELLED_Rank']],
        on='Efficiency_Quintile',
        how='left'
    )
    
    # 批量计算各时段的调整后数值
    period_cols = [col for col in df1.columns if col.startswith('Period_')]
    for col in period_cols:
        merged_df[f'Adjusted_{col}'] = merged_df[col] * merged_df['Efficiency_adjusted_EF']
    
    # 整理生成目标DF3,保留所需字段
    df3 = merged_df[['MODELLED_Rank', 'BM_Unit'] + [f'Adjusted_{col}' for col in period_cols]]
    
    return df3

代码说明

  • 类型统一:将Efficiency_Quintile转为字符串类型,避免因整数/字符串类型不匹配导致的关联失效
  • 高效关联:使用pd.merge替代Excel的INDEX+MATCH,支持批量关联大规模数据
  • 批量计算:通过遍历时段列实现批量乘法,无需逐个列手动编写计算逻辑
  • 结果整理:按需筛选字段,生成符合要求的DF3

使用示例

# 模拟测试数据
df1 = pd.DataFrame({
    'Date': ['2024-01-01']*3,
    'BM_Unit': ['Unit_A', 'Unit_B', 'Unit_C'],
    'Efficiency_Quintile': ['1', '3', '5'],
    'Period_1': [100, 200, 300],
    'Period_2': [150, 250, 350]
})

df2 = pd.DataFrame({
    'Efficiency_Quintile': ['1', '2', '3', '4', '5'],
    'Efficiency_adjusted_EF': [0.8, 0.9, 1.0, 1.1, 1.2],
    'MODELLED_Rank': ['Rank_1', 'Rank_2', 'Rank_3', 'Rank_4', 'Rank_5']
})

# 运行函数
df3 = calculate_modelled_results(df1, df2)
print(df3)

输出示例

MODELLED_Rank BM_Unit  Adjusted_Period_1  Adjusted_Period_2
0        Rank_1  Unit_A               80.0              120.0
1        Rank_3  Unit_B              200.0              250.0
2        Rank_5  Unit_C              360.0              420.0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 07:45:28