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

如何基于匹配条件批量替换DataFrame列为另一DataFrame对应值?

高效替换DataFrame列值的解决方案

针对你需要批量替换cus中nationality_code列值为scores对应risk_weight的需求,推荐两种高效的批量处理方法,完全不需要逐个编写替换逻辑:

方法一:使用map()(最简洁)

先将scores转换为代码-风险权重的字典,再用map()批量映射:

# 从scores生成映射字典:key是code,value是risk_weight
code_weight_map = scores.set_index('code')['risk_weight'].to_dict()

# 批量替换nationality_code列
cus['nationality_code'] = cus['nationality_code'].map(code_weight_map)
  • 如果cus中存在scores里没有的国家代码,映射后会变成NaN。如果想保留原代码,可改用:
cus['nationality_code'] = cus['nationality_code'].map(code_weight_map).fillna(cus['nationality_code'])

方法二:使用merge()(更直观,适合需保留多列场景)

通过合并两个DataFrame来实现替换,逻辑更清晰:

# 合并两个DataFrame,按code和nationality_code匹配
merged_df = cus.merge(scores, left_on='nationality_code', right_on='code', how='left')

# 用risk_weight替换原nationality_code列
cus['nationality_code'] = merged_df['risk_weight']
# 如果需要保留原代码应对缺失情况:
# cus['nationality_code'] = merged_df['risk_weight'].fillna(merged_df['nationality_code'])

# 可选:删除合并后新增的冗余列
merged_df.drop(['code', 'risk_weight'], axis=1, inplace=True)

这两种方法都能一次性处理所有国家代码,效率远高于手动编写mask语句,完全适配100+个代码的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 20:32:05