Python如何匹配不同DataFrame相同字段值并更新原表数据
代码失效的核心原因
- 列名调用错误:原始DataFrame存储汽车品牌的列名是
Original Car Brand,原代码中调用了不存在的Car Brand列,直接触发字段不存在的错误,流程无法正常执行 - 映射字典构造错误:原代码中
dict(corrected_df[['Car Brand', 'Current City']])的写法并不能生成逐行对应的“品牌-城市”键值对,它只会把DataFrame的列名作为字典的键,存储整列的Series作为值,完全无法用于匹配 - 缺失值处理逻辑缺失:就算把列名和字典写法改对,直接把map结果赋值给城市列,会让没有匹配到修正表的品牌对应城市直接变为空值,不符合“未匹配保留原城市值”的需求
修正后的可运行代码
# 1. 正确构造逐行的品牌-城市映射字典 brand_city_map = dict(zip(corrected_df["Car Brand"], corrected_df["Current City"])) # 2. 用原表的正确品牌列做匹配,匹配失败的空值位置填充原城市值 original_df["Original City"] = original_df["Original Car Brand"].map(brand_city_map).fillna( original_df["Original City"] )
执行效果
代码运行完成后,输出结果和预期完全一致:
- 修正表覆盖的品牌:Tesla、Renault、BMW、Fiat、Audi、Ferrari、Lamborghini、Mercedes对应的城市,全部替换为修正表的最新值
- 未在修正表中出现的品牌,城市值完全保留原表内容,无空值或覆盖错误
内容的提问来源于stack exchange,提问作者Andrew Tulip
相关产品推荐
相关产品推荐

