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


本文介绍两种简洁高效的方法,使用列名列表批量对 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()。


# python  # 作用域 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 网络优化76771 】 【 技术知识130152 】 【 IDC云计算60162 】 【 营销推广131313 】 【 AI优化88182 】 【 百度推广37138 】 【 网站推荐60173 】 【 精选阅读31334


相关推荐: 如何使用Golang反射将map转换为struct_Golang reflect类型映射技巧  Windows 11登录时提示“用户配置文件服务登录失败”怎么办_Windows 11修复损坏的用户配置文件  如何在 Laravel 中通过嵌套关联关系进行 orderBy 排序  Python高性能计算项目教程_NumPyCythonGPU并行加速  短链接怎么用php递归还原_多层加密链接的处理法【详解】  Win10如何设置双wan路由器 Win10双wan路由器设置方法【指南】  C#如何使用Channel C#通道实现异步通信  Windows10系统怎么查看CPU核心数_Win10逻辑处理器数量查看  全球各国上班时间表外贸邮件时间  Win11输入法切换快捷键怎么改_Windows 11自定义语言切换键位【教程】  C++如何使用std::optional?(处理可选值)  Win11怎样安装搜狗输入法_Win11安装搜狗输入法教程【步骤】  PythonFastAPI项目实战教程_API接口与异步处理实践  Windows10系统更新错误0x80070002_Win10自动更新失败手动修复  php怎么捕获异常_trycatch结构处理运行时错误的技巧【方法】  电脑的“网络和共享中心”去哪了_Windows 11新版网络设置指南【新手】  Python脚本参数接收_sys与argparse解析【指导】  Windows的便笺功能如何使用?(桌面备忘技巧)  如何在 Go 后端安全获取并验证前端存储的 JWT?  如何在Golang中实现RPC异步返回_Golang RPC异步处理与回调方法  php8.4匿名类怎么用_php8.4匿名类创建与使用场景【介绍】  Python解释执行模型_字节码流程说明【指导】  Win11怎么关闭小组件_Win11禁用任务栏天气与小组件方法【设置】  php做exe支持多线程吗_并发处理实现方式【详解】  Win11怎么设置默认邮件客户端 Win11修改Mail应用关联【教程】  Win11怎么关闭右下角弹窗_Win11拦截系统通知广告【设置】  如何在 Django 中安全修改用户密码而不使会话失效  Win11如何设置文件关联 Win11修改特定文件类型的默认打开程序【详解】  Win11怎么关闭防火墙通知_屏蔽Win11安全中心安全警告弹窗【技巧】  Windows10如何更改鼠标灵敏度_Win10鼠标属性指针选项调节  如何使用Golang实现容器自动化运维_Golang Docker运维管理方法  Windows怎样拦截QQ浏览器广告_Windows拦截QQ浏览器广告方法【方法】  php订单日志怎么在swoole写_php协程swoole写订单日志教程【教程】  php中作用域操作符能访问私有静态属性吗_访问权限限制【指南】  PHP中require语句后直接调用返回对象方法的语法解析  Win11怎么查看显卡显存_查询Win11显卡详细参数方法【步骤】  php订单日志怎么记录评价_php记录订单评价日志方法【方法】  Python文件管理规范_工程实践说明【指导】  Win11如何开启系统更新 Win11开启系统更新方法【步骤】  php8.4xdebug无法调试怎么办_php8.4xdebug配置问题解决【解答】  Win10电脑怎么设置网络名称_Windows10注册表NetworkList修改  Windows蓝屏错误0x0000002C怎么解决_系统IO异常排查方法  Win11怎么设置多显示器任务栏 Win11扩展任务栏至多屏方便跨屏操作【技巧】  Win11怎么关闭系统声音_Win11系统提示音静音设置【详解】  php转mp4怎么设置帧率_调整php生成mp4视频帧率说明【说明】  c# 如何深拷贝和浅拷贝  Windows蓝屏错误0x0000001E怎么修复_KMODEEXCEPTIONNOTHANDLED排查  Win10怎样安装Excel数据分析工具_Win10安装分析工具包步骤【教程】  MAC怎么一键隐藏桌面所有图标_MAC极简模式切换与终端指令【方法】  Windows10电脑怎么设置虚拟内存_Win10高级系统设置性能 

 2026-01-01

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

致胜网络推广营销网


致胜网络推广营销网

致胜网络推广营销网专注海外推广十年,是谷歌推广.Facebook广告全球合作伙伴,我们精英化的技术团队为企业提供谷歌海外推广+外贸网站建设+网站维护运营+Google SEO优化+社交营销为您提供一站式海外营销服务。

 915688610

 17370845950

 915688610@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.