如何用最快方式将一个DataFrame的值替换为另一个DataFrame的值?
问题描述
现有两个DataFrame:
df1结构:
class val 12 1271 12 1271 34 142 34 142
df2结构:
class val 12 123 34 141 69 667
需求:将df1的val替换为df2中对应class的val,最终结果如下:
class val 12 123 12 123 34 141 34 141
你当前用的merge方法可行,但步骤繁琐且不是最优解,最快的实现方式是用map方法:
最优实现(最快)
# 直接通过class映射df2中的val值 df1['val'] = df1['class'].map(df2.set_index('class')['val'])
原理说明
df2.set_index('class')['val']生成以class为索引、val为值的Series,本质是键值对结构map方法遍历df1的class列,逐个匹配对应的值替换原val列,全程无中间表生成,操作轻量化- 相比merge方法,map避免了表连接、列重命名、删除列等冗余步骤,数据量越大,性能优势越明显
验证结果
执行上述代码后,df1的val列会被正确替换为df2中对应class的数值,与预期结果完全一致。
内容的提问来源于stack exchange,提问作者Devarshi Goswami
相关产品推荐
相关产品推荐

