You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Pandas中基于Township列补全zip列的缺失值?

解决911.csv数据集Zip缺失值(基于Township填充)的方案

核心思路

通过统计每个Township对应的非缺失zip值,用该城镇最具代表性的Zip(比如出现次数最多的众数)填充对应缺失项。

具体实现步骤(Python + Pandas)

  1. 加载数据并定位缺失项
import pandas as pd

# 加载本地的911.csv数据集
df = pd.read_csv('911.csv')

# 筛选出Zip缺失的城镇列表
missing_townships = df[df['zip'].isna()]['Township'].unique()
print("Zip缺失的城镇:", missing_townships)
  1. 查看每个缺失城镇的有效Zip分布
    这一步能帮你确认每个城镇对应的Zip值,避免错误填充:
# 按城镇分组,统计每个城镇的Zip值出现频率
township_zip_counts = df.dropna(subset=['zip']).groupby('Township')['zip'].value_counts()

# 打印缺失城镇的Zip分布
for town in missing_townships:
    print(f"\n{town} 对应的Zip值及出现次数:")
    print(township_zip_counts.get(town, "该城镇无有效Zip记录"))
  1. 填充缺失的Zip值
    这里用每个城镇的众数Zip(出现次数最多的)进行填充,也可以根据需求改成其他策略(比如全部Zip的列表):
# 生成城镇到众数Zip的映射字典
township_zip_map = df.dropna(subset=['zip']).groupby('Township')['zip'].agg(lambda x: x.mode()[0])

# 填充缺失值
df['zip'] = df.apply(
    lambda row: township_zip_map[row['Township']] if pd.isna(row['zip']) else row['zip'],
    axis=1
)

# 验证填充结果
print("\n填充后Zip列缺失值数量:", df['zip'].isna().sum())

特殊情况处理

如果某个城镇没有任何非缺失的Zip记录,需要手动查找该城镇的官方邮政编码(比如当地邮政局信息),然后手动填充:

# 示例:手动填充某城镇的Zip
df.loc[df['Township'] == '目标城镇名称', 'zip'] = 12345  # 替换为实际Zip

内容的提问来源于stack exchange,提问作者Shenin Francis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 14:30:40