使用pandas根据另一个DataFrame的行值填充指定列的值
实现方案
你可以先把存映射规则的第二个DataFrame转成字典,再通过pandas的map方法对第一列做值替换,完整代码如下:
import pandas as pd # 构建你给出的两个示例DataFrame df1 = pd.DataFrame({'first': ['bar', 'bar', 'foo', 'foo']}) df2 = pd.DataFrame({'bar': ['a'], 'foo': ['b']}) # 提取映射字典:把df2的第一行转为「列名:值」格式的字典 replace_map = df2.iloc[0].to_dict() # 对first列执行映射替换 df1['first'] = df1['first'].map(replace_map)
执行后df1就是你需要的结果:
first 0 a 1 a 2 b 3 b
如果你的df1中存在df2里没有对应规则的类别,不想被替换成NaN,可以补充fillna保留原值,修改替换逻辑为:
df1['first'] = df1['first'].map(replace_map).fillna(df1['first'])
内容的提问来源于stack exchange,提问作者IRK
相关产品推荐
相关产品推荐

