讲师中心 微信公众号
AI工具推荐 视频效率加速

如何在 Pandas 中安全地用字典映射更新列值而不丢失未匹配项

小静姑娘_1545

小静姑娘_1545

发布时间:2026-02-01 09:55:01

|

1008人浏览过

|

来源于php中文网

原创

如何在 Pandas 中安全地用字典映射更新列值而不丢失未匹配项

本文介绍如何使用 `map()` 配合 `combine_first()` 在 pandas 中精准更新特定行的列值(如为同名县添加省份后缀),同时保留原始数据中未被映射覆盖的原有值,避免意外产生 nan。

在处理行政区划数据(如波兰各县)时,常遇到同名不同属的问题:例如多个省份下存在名为 "Powiat brzeski" 的县。仅靠县名无法唯一标识,需结合省份信息增强区分度。理想方案是:对指定代码(Code)映射生成带省份后缀的新县名(如 "Powiat brzeski_Malopolskie"),但不干扰其他未定义映射关系的记录。

然而,直接使用 df['County'] = df['Code'].map(code_to_county) 会导致所有未在 code_to_county 字典中出现的 Code 对应的 County 值被设为 NaN——这正是原问题的核心痛点。

✅ 正确解法是利用 Pandas 的 combine_first() 方法,它能以“优先级合并”方式融合两个 Series:

  • 第一个 Series(映射结果)提供更新值;
  • 第二个 Series(原始 County 列)作为后备,填充所有 NaN 位置。
import pandas as pd

# 示例数据:含6条记录,其中1条Code(9999999)和1条County('Powiat ciechanowski')未在映射字典中
data = {
    'Code': [1202000, 2402000, 802000, 3017000, 3005000, 9999999],
    'County': ['Powiat brzeski', 'Powiat bielski', 'Powiat krośnieński', 
               'Powiat ostrowski', 'Powiat grodziski', 'Powiat ciechanowski']
}
df = pd.DataFrame(data)

# 映射字典:仅定义需增强区分度的5个县
code_to_county = {
    1202000: "Powiat brzeski_Malopolskie",
    2402000: "Powiat bielski_Slaskie",
    802000:  "Powiat krośnieński_Lubuskie",
    3017000: "Powiat ostrowski_Wielkopolskie",
    3005000: "Powiat grodziski_Wielkopolskie"
}

# ✅ 安全更新:用映射结果覆盖匹配项,其余保持原值
df['County'] = df['Code'].map(code_to_county).combine_first(df['County'])

print(df)

输出结果:

应用程序在线商店宣传网站模板
应用程序在线商店宣传网站模板

应用程序在线商店宣传网站模板是一款提供免费应用程序在线商店宣传网站模板下载。提示:本模板调用到谷歌字体库,可能会出现页面打开比较缓慢。

下载
      Code                          County
0  1202000      Powiat brzeski_Malopolskie
1  2402000          Powiat bielski_Slaskie
2   802000     Powiat krośnieński_Lubuskie
3  3017000  Powiat ostrowski_Wielkopolskie
4  3005000  Powiat grodziski_Wielkopolskie
5  9999999             Powiat ciechanowski

? 关键原理说明:

  • df['Code'].map(code_to_county) 返回一个与 df 等长的 Series,匹配成功则为新值,失败则为 NaN;
  • .combine_first(df['County']) 将该 Series 与原始 County 列按索引对齐,逐元素取非空值(左优先,左为空则取右);
  • 因此,仅字典中明确声明的 5 行被更新,第 6 行自动回退至原始县名,零数据丢失。

⚠️ 注意事项:

  • 确保 code_to_county 的键类型与 df['Code'] 列一致(如均为 int,避免因 str 键导致全部匹配失败);
  • 若需批量处理多列或复杂逻辑,可封装为函数并结合 apply() 或 np.where(),但本场景 map + combine_first 最简洁高效;
  • 替代方案如 fillna() 仅适用于单值填充,而 combine_first() 支持 Series-to-Series 精准对齐,是处理此类“条件性列更新”的推荐模式。

通过这一方法,你可在保证数据完整性的同时,精准解决同名行政区的歧义问题,为后续多源文件合并奠定可靠基础。

热门AI工具

更多
WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

火山引擎

火山引擎是一款面向企业的云计算与AI服务平台。

音述AI
音述AI Hot

一款AI音频处理工具,主要用于音述AI是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

墨刀AI
墨刀AI Hot

一款AI图像与设计工具,主要用于产品经理的专属智能体,适合需要提升相关任务效率的用户。

咔片AIPPT

一款在线AI演示文稿制作工具,可根据主题和内容需求辅助生成PPT结构与页面,提高演示材料制作效率。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

讯飞绘文

讯飞绘文是一款由科大讯飞推出的一站式 AIGC 内容运营平台。

Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

相关专题

更多
Python 时间序列分析与预测
Python 时间序列分析与预测

本专题专注讲解 Python 在时间序列数据处理与预测建模中的实战技巧,涵盖时间索引处理、周期性与趋势分解、平稳性检测、ARIMA/SARIMA 模型构建、预测误差评估,以及基于实际业务场景的时间序列项目实操,帮助学习者掌握从数据预处理到模型预测的完整时序分析能力。

340

2025.12.04

Python 数据清洗与预处理实战
Python 数据清洗与预处理实战

本专题系统讲解 Python 在数据清洗与预处理中的核心技术,包括使用 Pandas 进行缺失值处理、异常值检测、数据格式化、特征工程与数据转换,结合 NumPy 高效处理大规模数据。通过实战案例,帮助学习者掌握 如何处理混乱、不完整数据,为后续数据分析与机器学习模型训练打下坚实基础。

252

2026.01.31

Python数据分析与Pandas高级实战
Python数据分析与Pandas高级实战

本专题围绕 Python 数据分析展开,系统讲解 Pandas 的高级用法,包括数据清洗、透视表、时间序列分析以及多表合并与分组操作。通过实战案例,帮助开发者掌握高效处理与分析数据的方法,提高数据处理效率与分析能力。

691

2026.04.13

string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

6759

2023.08.02

int占多少字节
int占多少字节

int占4个字节,意味着一个int变量可以存储范围在-2,147,483,648到2,147,483,647之间的整数值,在某些情况下也可能是2个字节或8个字节,int是一种常用的数据类型,用于表示整数,需要根据具体情况选择合适的数据类型,以确保程序的正确性和性能。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

3265

2024.08.29

c++怎么把double转成int
c++怎么把double转成int

本专题整合了 c++ double相关教程,阅读专题下面的文章了解更多详细内容。

4228

2025.08.29

C++中int的含义
C++中int的含义

本专题整合了C++中int相关内容,阅读专题下面的文章了解更多详细内容。

2885

2025.08.29

golang map内存释放
golang map内存释放

本专题整合了golang map内存相关教程,阅读专题下面的文章了解更多相关内容。

630

2025.09.05

Vite 项目如何打包和部署
Vite 项目如何打包和部署

Vite项目打包部署专题汇集生产构建、产物预览、输出目录、资源路径、Nginx与GitHub Pages部署及常见白屏和路由404问题的已审核文章,帮助读者完成上线流程。

20

2026.10.28

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
uni-app从入门到实战教程
uni-app从入门到实战教程

共0课时 | 0人学习

uni-app x harmony开发指南
uni-app x harmony开发指南

共0课时 | 0人学习

uni-app鸿蒙运行和发行
uni-app鸿蒙运行和发行

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn