全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

如何用列表一次性映射 DataFrame 中指定列的字典值

本文介绍两种简洁高效的方法,使用列名列表批量对 pandas dataframe 的子集列应用字典映射(如缩写替换),避免重复书写列名或多次调用 `replace()`。

在数据清洗与标准化过程中,常需将多列中特定字符串按统一规则映射为新值(例如将城市代码 'PHX' → 'PHO'、'BKN' → 'NJN'),但又不希望影响其他列。Pandas 的 DataFrame.replace() 方法虽强大,但默认作用于全表;若仅针对部分列,传统写法易冗余:

# ❌ 冗长且不可扩展
df = df.replace({'col1': name_dict}).replace({'col2': name_dict})

# ❌ 仍需显式列出每列
df = df.replace({'col1': name_dict, 'col2': name_dict})

✅ 推荐方案一:用 dict.fromkeys() 构造映射字典
该方法利用 Python 内置函数 dict.fromkeys(keys, value) 快速生成键值对一致的字典,语法简洁、语义清晰:

name_dict = {'PHX': 'PHO', 'BKN': 'NJN'}
cols_to_map = ['col1', 'col2']

df = df.replace(dict.fromkeys(cols_to_map, name_dict))

此行等价于 df.replace({'col1': name_dict, 'col2': name_dict}),但无需重复键名,便于维护和扩展。

✅ 推荐方案二:切片 + 原地替换(更直观、内存友好)
直接选取目标列子集,对其调用 replace(),并赋值回原 DataFrame。适用于需明确控制作用范围或处理大型数据集的场景:

cols_to_map = ['col1', 'col2']
df[cols_to_map] = df[cols_to_map].replace(name_dict)

⚠️ 注意:此方式不会修改未选中的列(如 col3 保持原样),且支持链式操作与 inplace=False 默认行为,安全可控。

完整可运行示例:

import pandas as pd

data = {
    'id': ['a', 'b', 'c', 'd', 'e'],
    'col1': ['PHX', 'BKN', 'X', 'PHX', 'X'],
    'col2': ['X', 'PHX', 'BKN', 'BKN', 'X'],
    'col3': ['PHX', 'BKN', 'PHX', 'BKN', 'PHX']
}
df = pd.DataFrame(data)
name_dict = {'PHX': 'PHO', 'BKN': 'NJN'}

# 任选其一即可
df = df.replace(dict.fromkeys(['col1', 'col2'], name_dict))
# 或
# df[['col1', 'col2']] = df[['col1', 'col2']].replace(name_dict)

print(df)

输出符合预期:

  id col1 col2 col3
0  a  PHO    X  PHX
1  b  NJN  PHO  BKN
2  c    X  NJN  PHX
3  d  PHO  NJN  BKN
4  e    X    X  PHX

总结

  • dict.fromkeys(cols, mapping_dict) 是语法最简的“声明式”方案,适合配置化或动态列名场景;
  • df[cols] = df[cols].replace(...) 是逻辑最直白的“操作式”方案,利于调试与性能优化;
  • 避免使用 df.replace({['col1','col2']: ...}) —— 列表不可哈希,会触发 TypeError;
  • 两种方法均不改变原始字典结构,也不影响未指定列,兼顾安全性与可读性。


# python  # app  # 数据清洗  # 键值对 


相关文章: logo在线制作免费网站在线制作好吗,DW网页制作时,如何在网页标题前加上logo?  阿里云高弹*务器配置方案|支持分布式架构与多节点部署  如何选择适配移动端的WAP自助建站平台?  安徽网站建设与外贸建站服务专业定制方案  实惠建站价格推荐:2025年高性价比自助建站套餐解析  如何在阿里云服务器自主搭建网站?  山东网站制作公司有哪些,山东大源集团官网?  如何自定义建站之星模板颜色并下载新样式?  上海网站制作网站建设公司,建筑电工证网上查询系统入口?  ,怎么在广州志愿者网站注册?  简历在线制作网站免费,免费下载个人简历的网站是哪些?  建站之星如何优化SEO以实现高效排名?  建站DNS解析失败?如何正确配置域名服务器?  制作网站公司那家好,网络公司是做什么的?  开心动漫网站制作软件下载,十分开心动画为何停播?  太平洋网站制作公司,网络用语太平洋是什么意思?  简单实现Android文件上传  网站好制作吗知乎,网站开发好学吗?有什么技巧?  建站之星如何通过成品分离优化网站效率?  seo网站制作优化,网站SEO优化步骤有哪些?  建站之星安装失败:服务器环境不兼容?  成都品牌网站制作公司,成都营业执照年报网上怎么办理?  如何选择适合PHP云建站的开源框架?  如何快速搭建高效简练网站?  建站之星Pro快速搭建教程:模板选择与功能配置指南  合肥做个网站多少钱,合肥本地有没有比较靠谱的交友平台?  香港服务器建站指南:外贸独立站搭建与跨境电商配置流程  如何用PHP工具快速搭建高效网站?  微信小程序 input输入框控件详解及实例(多种示例)  成都网站制作公司哪家好,四川省职工服务网是做什么用?  深圳 网站制作,深圳招聘网站哪个比较好一点啊?  手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?  网站设计制作企业有哪些,抖音官网主页怎么设置?  详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)  c# 在高并发下使用反射发射(Reflection.Emit)的性能  清除minerd进程的简单方法  如何选择PHP开源工具快速搭建网站?  建站主机核心功能解析:服务器选择与网站搭建流程指南  建站主机选哪家性价比最高?  如何用PHP快速搭建CMS系统?  招贴海报怎么做,什么是海报招贴?  广州美橙建站如何快速搭建多端合一网站?  如何用IIS7快速搭建并优化网站站点?  Android使用GridView实现日历的简单功能  C++用Dijkstra(迪杰斯特拉)算法求最短路径  c# F# 的 MailboxProcessor 和 C# 的 Actor 模型  Avalonia如何实现跨窗口通信 Avalonia窗口间数据传递  C#如何使用XPathNavigator高效查询XML  如何在云主机上快速搭建多站点网站?  相册网站制作软件,图片上的网址怎么复制? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。