Python中如何基于字典替换Pandas DataFrame列值?
更优实现方案
你原来的循环写法不仅不够简洁,还存在逻辑问题:pandas.Series.replace() 默认不修改原序列,你没有接收返回值的话,运行完原表不会发生任何改动;而且多次循环全列替换的性能会随数据量上涨明显变差。
最简洁高效的做法是先把现有字典结构反转成「国家代码为键、对应大洲为值」的正向映射字典,再单次调用替换方法完成全部转换,代码如下:
# 反转原有字典结构,生成 国家代码:大洲 的直接映射 code_map = {code: continent for continent, code_list in country_dict.items() for code in code_list} # 单次完成全列替换,未匹配到的代码会原样保留 df['Country'] = df['Country'].replace(code_map)
方案优势
- 仅需一次列扫描就完成全部替换,数据量越大性能优势越明显
- 代码逻辑清晰,扁平化后的映射字典可以复用于其他匹配场景,不需要每次都遍历原嵌套结构
- 不需要写循环逻辑,代码更简洁易维护
如果你希望未匹配到的国家代码显示为空值而不是保留原内容,把replace换成map即可:
df['Country'] = df['Country'].map(code_map)
内容的提问来源于stack exchange,提问作者Hendrik
相关产品推荐
相关产品推荐

