如何使用映射文件更新Pandas DataFrame,无匹配键值时保留默认值
解决Pandas DataFrame部分值更新(保留未匹配项)的问题
这问题我之前处理类似数据时也碰到过!你要的是只更新匹配映射键的行,不匹配的内容完全保留原样,用Pandas有两种简单的实现方式,我给你详细说明:
方法一:使用replace()(最简洁直接)
replace()方法默认只会替换字典中存在的键对应的数值,不匹配的内容会原封不动保留,完美契合你的需求:
import pandas as pd # 构建原始DataFrame df = pd.DataFrame({ 'City': ['Toronto', 'Toronto', 'Vancouver', 'Calgary'], 'Employer': ["Magna's Automotive", 'Manga', 'Dunder', 'Flames'] }) # 你的映射字典 employer_map = {'Manga':"Magna's Automotive", 'Dunder': 'Dunder Mifflin'} # 执行更新操作 df['Employer'] = df['Employer'].replace(employer_map)
方法二:map()结合fillna()
如果想更直观地控制替换逻辑,可以先用map()匹配键值(不匹配的会变成NaN),再用fillna()把NaN替换回原始值:
df['Employer'] = df['Employer'].map(employer_map).fillna(df['Employer'])
验证结果
运行任意一种方法后,你的DataFrame都会变成预期的样子:
| City | Employer |
|---|---|
| Toronto | Magna's Automotive |
| Toronto | Magna's Automotive |
| Vancouver | Dunder Mifflin |
| Calgary | Flames |
内容的提问来源于stack exchange,提问作者costco_lover888
相关产品推荐
相关产品推荐

