Python Pandas中使用多字典映射DataFrame多列值的问题
解决Pandas多列映射替换的问题
嘿,我一眼就揪出问题所在啦!你在调用replace的时候犯了个小失误——把字典变量country_map写成了字符串'country_map',这就导致Pandas没法识别你要用来映射的字典,自然没法完成多列的替换操作。
正确的实现步骤
先完整还原你的数据和映射字典:
import pandas as pd # 创建目标DataFrame df = pd.DataFrame({ 'name': ['a', 'b'], 'state': [1, 2], 'country': [67, 52] }) # 定义状态码与国家码的映射字典 state_map = {1:'tn', 2:'kerala'} country_map = {67: 'usa', 52: 'india'}
然后用正确的replace调用方式,注意country对应的是变量country_map,不要加引号:
# 多列批量执行映射替换 df.replace({'state': state_map, 'country': country_map}, inplace=True)
执行后就能得到符合预期的结果:
name state country 0 a tn usa 1 b kerala india
另一种可选的写法
如果你觉得嵌套字典的写法有点绕,也可以分开对每一列单独执行替换,效果完全一致:
df['state'] = df['state'].replace(state_map) df['country'] = df['country'].replace(country_map)
两种方法都能完美解决你的多列映射需求,选你觉得顺手的就行~
内容的提问来源于stack exchange,提问作者Sai Rajesh
相关产品推荐
相关产品推荐

