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

基于Pandas映射填充数据集缺失的region字段

问题描述

现有两个数据集:

df_1前4行数据:

region  postal_code
Adrar   1000
Broko   5633
Conan   4288
Cymus   7435

df_2前4行数据:

Name     Charges   region    postal_code   Revenue    
Lia        HG       Pintol    4522           345
Joss       PX       Inend     7455           142
Amph       CT                 5633           148
Andrew     UY       Liven     9033           147

需要填充df_2中缺失的region字段,规则是通过postal_code匹配df_1中的对应region值(例如df_2第三行postal_code为5633,对应df_1的region为Broko)。


解决方案

方法1:使用map函数(高效简洁)

先将df_1转换为postal_code到region的映射字典,再用该字典填充df_2的缺失值,仅覆盖region字段的空值,保留已有有效数据:

import pandas as pd

# 构建postal_code与region的映射字典
postal_region_map = df_1.set_index('postal_code')['region'].to_dict()

# 填充df_2中缺失的region
df_2['region'] = df_2['region'].fillna(df_2['postal_code'].map(postal_region_map))

方法2:使用merge合并填充

通过左连接合并两个数据集,提取匹配到的region值填充原数据,适合需要查看匹配关系的场景:

import pandas as pd

# 左连接df_2和df_1,基于postal_code,添加后缀区分重复列
merged_data = df_2.merge(df_1, on='postal_code', how='left', suffixes=('', '_df1'))

# 用df_1的region填充df_2的缺失值
df_2['region'] = df_2['region'].fillna(merged_data['region_df1'])

# 可选:清理临时合并生成的列
merged_data.drop('region_df1', axis=1, inplace=True)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 08:05:14