如何用列表一次性对 DataFrame 的指定列应用字典映射
发布时间 - 2026-01-01 00:00:00 点击率:次本文介绍两种简洁高效的方法,使用列名列表批量对 pandas dataframe 的子集列(如 col1、col2)应用字典映射,避免重复书写键名或链式调用 replace,兼顾可读性与性能。
在 Pandas 中,当需要仅对部分列(而非整张表)应用字典映射(如将 'PHX' → 'PHO'、'BKN' → 'NJN')时,直接使用 df.replace(name_dict) 会作用于所有列,而显式写出 {'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))该写法等价于 {'col1': name_dict, 'col2': name_dict},但无需重复输入 name_dict,语义清晰且一行完成。
✅ 推荐方法二:按列切片 + 原地替换(推荐用于大表)
先通过列名列表选取子 DataFrame,再对其整体调用 replace(),并赋值回原位置:
cols_to_map = ['col1', 'col2'] df[cols_to_map] = df[cols_to_map].replace(name_dict)
此方式优势明显:
- 明确作用域:仅影响指定列,逻辑隔离性强;
- 内存友好:对大型 DataFrame 更高效,避免全表扫描;
- 支持链式操作:可无缝嵌入 .assign() 或管道中(如 df.assign(**{c: df[c].map(name_dict).fillna(df[c]) for c in cols_to_map}),但 replace 对未匹配项更鲁棒)。
⚠️ 注意事项:
- replace() 默认保留未匹配的原始值(如 'X' 不变),符合预期;若需强制转换缺失值,可配合 fillna();
- 避免使用 df[col].map(name_dict) 替代 replace() —— map() 会将未匹配项转为 NaN,而 replace() 保持原值,更安全;
- 不要尝试 {['col1','col2']: name_dict},因列表不可哈希,会触发 TypeError。
综上,dict.fromkeys() 适合简洁表达,而列切片赋值更适合生产环境中的可控性和可维护性。两者均显著优于手动重复键名或链式 replace()。
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
宙斯浏览器怎么屏蔽图片浏览 节省手机流量使用设置方法
Laravel API路由如何设计_Laravel构建RESTful API的路由最佳实践
Laravel如何理解并使用服务容器(Service Container)_Laravel依赖注入与容器绑定说明
网站制作大概多少钱一个,做一个平台网站大概多少钱?
制作企业网站建设方案,怎样建设一个公司网站?
免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?
敲碗10年!Mac系列传将迎来「触控与联网」双革新
Laravel如何实现多级无限分类_Laravel递归模型关联与树状数据输出【方法】
JS经典正则表达式笔试题汇总
如何在Tomcat中配置并部署网站项目?
如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南
青岛网站建设如何选择本地服务器?
新三国志曹操传主线渭水交兵攻略
大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?
如何在新浪SAE免费搭建个人博客?
HTML5打空格有哪些误区_新手常犯的空格使用错误【技巧】
js实现点击每个li节点,都弹出其文本值及修改
Laravel如何使用Socialite实现第三方登录?(微信/GitHub示例)
微信推文制作网站有哪些,怎么做微信推文,急?
HTML5空格和margin有啥区别_空格与外边距的使用场景【说明】
佛山企业网站制作公司有哪些,沟通100网上服务官网?
linux写shell需要注意的问题(必看)
laravel怎么配置Redis作为缓存驱动_laravel Redis缓存配置教程
Laravel如何配置和使用缓存?(Redis代码示例)
Laravel如何使用API Resources格式化JSON响应_Laravel数据资源封装与格式化输出
如何在服务器上配置二级域名建站?
uc浏览器二维码扫描入口_uc浏览器扫码功能使用地址
Laravel storage目录权限问题_Laravel文件写入权限设置
如何在IIS中新建站点并配置端口与IP地址?
如何用5美元大硬盘VPS安全高效搭建个人网站?
Laravel 419 page expired怎么解决_Laravel CSRF令牌过期处理
网站制作价目表怎么做,珍爱网婚介费用多少?
夸克浏览器网页跳转延迟怎么办 夸克浏览器跳转优化
Laravel怎么在Blade中安全地输出原始HTML内容
如何确保FTP站点访问权限与数据传输安全?
如何选择PHP开源工具快速搭建网站?
网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?
用v-html解决Vue.js渲染中html标签不被解析的问题
php静态变量怎么调试_php静态变量作用域调试技巧【解答】
Laravel如何处理文件上传_Laravel Storage门面实现文件存储与管理
Bootstrap CSS布局之列表
如何快速启动建站代理加盟业务?
javascript如何操作浏览器历史记录_怎样实现无刷新导航
1688铺货到淘宝怎么操作 1688一键铺货到自己店铺详细步骤
zabbix利用python脚本发送报警邮件的方法
Laravel怎么定时执行任务_Laravel任务调度器Schedule配置与Cron设置【教程】
Laravel如何实现本地化和多语言支持?(i18n教程)
网站建设保证美观性,需要考虑的几点问题!
Google浏览器为什么这么卡 Google浏览器提速优化设置步骤【方法】
湖南网站制作公司,湖南上善若水科技有限公司做什么的?

