如何基于已有数据填充Jupyter Notebook数据集State列的NaN值
用已有City-State对应关系填充State列缺失值
步骤1:自动生成City到State的映射字典
先从数据集中已有的非缺失State的行里提取唯一的City-State对应关系,生成映射字典,避免手动逐个输入:
import pandas as pd # 假设你的数据集已读入为df city_state_map = df.dropna(subset=['State']).drop_duplicates(subset=['City']).set_index('City')['State'].to_dict()
这段代码会:
- 过滤掉State列有缺失的行
- 对每个City只保留一条有效对应记录
- 转成
{城市: 邦/州}的字典格式
步骤2:手动补充特殊映射(可选)
如果数据集中存在部分City没有有效对应记录(比如题目里的示例),可以直接更新映射字典:
city_state_map.update({ 'Chennai': 'Tamil Nadu', 'Vishakapatnam': 'Andhra Pradesh' })
步骤3:填充缺失值
用映射字典匹配City列,填充State列的NaN值:
df['State'] = df['State'].fillna(df['City'].map(city_state_map))
注意事项
- 如果某个City对应多个不同的State,
drop_duplicates会保留第一条出现的记录,你可以根据需求调整(比如用groupby取最常见的State) - 填充后仍存在NaN的行,说明对应的City在映射字典里没有匹配项,需要进一步处理(比如手动补充或标记)
内容的提问来源于stack exchange,提问作者Rohit Kaushik
相关产品推荐
相关产品推荐

