Pandas map方法映射州编码后返回含NaN值列的问题
问题分析与解决办法
问题根源
你用错了字典层级。state_abbv_dict的外层是'Postal Code'键,真正的州名-缩写映射是这个键对应的子字典。直接用整个state_abbv_dict去map,只有当State列的值等于'Postal Code'时才能匹配上,其他州名自然返回NaN。
另外,从尾部数据的县名(Somerset、Oxford等都是缅因州的县)来看,这些行的原始State值应该是'Maine',你需要确认state_abbv_dict['Postal Code']里有没有'Maine': 'ME'这个条目,如果没有也会导致NaN。
修复代码
先提取正确的映射字典,再执行映射:
# 提取真正的州名-缩写映射 state_map = state_abbv_dict['Postal Code'] # 执行映射 county_2015['State'] = county_2015['State'].map(state_map)
额外检查
如果还有NaN,先查看这些行的原始State值:
# 先备份原State列,避免覆盖后无法查看原始值 county_2015['State_Original'] = county_2015['State'] # 映射后筛选出State为NaN的行,查看对应的原始州名 print(county_2015[county_2015['State'].isna()]['State_Original'].unique())
根据输出的州名,补充到state_map里即可。
内容的提问来源于stack exchange,提问作者taurean_joe
相关产品推荐
相关产品推荐

