基于另一列值填充CSV中store_location列的缺失数据
基于store_name填充缺失的store_location解决方案
可以通过Pandas构建名称与地址的映射关系,快速填充缺失值,具体实现步骤如下:
1. 读取并检查数据
先读取CSV文件,确认缺失数据的分布情况:
import pandas as pd df = pd.read_csv('https://raw.githubusercontent.com/hoatranobita/app_to_cloud_4/main/store_location.csv') # 查看数据缺失情况 print(df.isnull().sum()) # 预览前几行数据 print(df.head())
2. 构建名称-地址映射表
为每个store_name匹配唯一的有效store_location,这里提供两种常用方式:
方式一:取每个名称对应的第一个非缺失地址
location_map = df.groupby('store_name')['store_location'].first().to_dict()
方式二:去重构建映射(先剔除缺失值再去重)
location_map = df.dropna().drop_duplicates(subset='store_name').set_index('store_name')['store_location'].to_dict()
特殊情况处理:同一名称对应多个地址
如果存在同一个store_name对应多个不同有效地址的情况,建议取出现次数最多的地址:
# 取每个名称下出现次数最多的地址 location_map = df.groupby('store_name')['store_location'].agg(lambda x: x.mode()[0]).to_dict()
3. 填充缺失值
用构建好的映射表填充store_location列的缺失项:
df['store_location'] = df['store_location'].fillna(df['store_name'].map(location_map))
4. 验证填充结果
检查填充后的数据是否还有缺失:
print(df.isnull().sum()) # 查看填充后的完整数据 print(df)
内容的提问来源于stack exchange,提问作者hoa tran
相关产品推荐
相关产品推荐

