如何使用Pandas处理关联的inputs与coef DataFrame 实现Excel VLOOKUP等效逻辑
实现思路与代码示例
核心问题在于coef表是宽表结构,关联键(Indicator的取值)作为列名存在,无法直接和inputs的Indicator字段做关联,所以需要先做表结构转换,再执行关联计算,具体步骤如下:
步骤1:将coef宽表转为长表
使用pd.melt方法把coef的Indicator相关列转为行,生成可直接关联的长表结构:
# 宽表转长表,KeyCoef保留为行主键,其他列转为Indicator字段,对应值转为系数 coef_long = coef.melt( id_vars='KeyCoef', var_name='Indicator', value_name='Coefficient' )
步骤2:关联两个表
以Indicator为关联键,左连接inputs和转换后的coef_long表:
merged_df = inputs.merge(coef_long, on='Indicator', how='left')
步骤3:计算加权值
将inputs中C1~C6的数值分别乘上对应系数,得到每个指标的加权贡献:
c_columns = ['C1', 'C2', 'C3', 'C4', 'C5', 'C6'] for col in c_columns: merged_df[f'weighted_{col}'] = merged_df[col] * merged_df['Coefficient']
步骤4:分组聚合得到最终结果
按inputs的Key字段和coef的KeyCoef字段分组,对所有加权列求和,得到每个Key对应的各系数组计算结果:
result = merged_df.groupby( ['Key', 'KeyCoef'], as_index=False )[[f'weighted_{col}' for col in c_columns]].sum()
如果需要调整计算逻辑(比如按不同维度求和、保留其他字段),修改分组字段或者聚合规则即可。
内容的提问来源于stack exchange,提问作者DaniV
相关产品推荐
相关产品推荐

