Pandas DataFrame中仅替换美国州缩写为全称且保留其他国家州名的问题
问题原因
- pandas的
map()方法在匹配不到字典键的时候会默认返回None,这就是其他国家州名全部变为空值的直接原因。 - 你写的字典推导式
states = {state: abbrev for state, abbrev in states.items()}是冗余代码,和你原始定义的states字典结构完全一致,没有实际作用,可以直接删除。
解决方案
方案1:使用replace()方法(最简单)
replace()方法匹配不到键时会保留原值,完全符合你的需求:
# 直接使用你定义的美国州缩写-全名字典即可 Data['State_full'] = Data['State'].replace(states)
方案2:条件过滤替换(更严谨)
如果担心其他国家存在和美国州缩写同名的州名被误替换,可以只对美国的行做映射处理:
# 先将原State值全部填充到新列 Data['State_full'] = Data['State'] # 仅对美国的行做缩写转全称处理 Data.loc[Data['Country'] == 'United States', 'State_full'] = Data.loc[Data['Country'] == 'United States', 'State'].map(states)
内容的提问来源于stack exchange,提问作者haben
相关产品推荐
相关产品推荐

