基于键值条件高效映射 Pandas DataFrame 多列数据


基于键值条件高效映射 Pandas DataFrame 多列数据

本文介绍如何利用 pandas 和 numpy 高效地根据 dataframe 中“键”列的值,有条件地映射和处理多列数据。针对传统 `numpy.select` 逐列操作的低效性,教程将展示如何通过构建布尔掩码结合 `dataframe.where()` 方法实现矢量化操作,从而优化数据清洗和转换流程,将不符合条件的列值替换为指定标记(如 'na')。

1. 问题背景与传统方法局限性

在数据处理中,我们经常需要根据某一“键”列的值,有条件地修改或保留 DataFrame 中其他多列的数据。例如,当“键”列为 'key1' 时,我们可能只关心 'colA' 和 'colD' 的值,而其他列则应标记为无效。

以下是一个典型的场景及使用 numpy.select 的传统实现方式:

import pandas as pd
import numpy as np

# 创建示例 DataFrame
data = {
    'key': ['key1', 'key2', 'key3', 'key1', 'key2'],
    'colA': ['value1A', 'value2A', 'value3A', 'value4A', 'value5A'],
    'colB': ['value1B', 'value2B', 'value3B', 'value4B', 'value5B'],
    'colC': ['value1C', 'value2C', 'value3C', 'value4C', 'value5C'],
    'colD': ['value1D', 'value2D', 'value3D', 'value4D', 'value5D']
}
df = pd.DataFrame(data)

# 传统方法:为每列单独应用 np.select
df['colA'] = np.select([df['key'] == 'key1'], [df['colA']], default= 'NA')
df['colD'] = np.select([df['key'] == 'key1'], [df['colD']], default= 'NA')
df['colB'] = np.select([df['key'] == 'key2'], [df['colB']], default= 'NA')
df['colC'] = np.select([df['key'] == 'key3'], [df['colC']], default= 'NA')

print("使用 np.select 的结果:")
print(df)

输出结果:

使用 np.select 的结果:
    key     colA     colB     colC     colD
0  key1  value1A       NA       NA  value1D
1  key2       NA  value2B       NA       NA
2  key3       NA       NA  value3C       NA
3  key1  value4A       NA       NA  value4D
4  key2       NA  value5B       NA       NA

这种方法虽然能达到目的,但存在明显局限性:

蚂蚁PPT 蚂蚁PPT

AI在线智能生成PPT

蚂蚁PPT 113 查看详情 蚂蚁PPT
  • 重复性高: 对于每个需要映射的列,都需要重复编写 np.select 逻辑。
  • 扩展性差: 当需要处理的列数很多时,代码会变得冗长且难以维护。
  • 效率问题: 尽管 np.select 是矢量化的,但多次独立的列操作仍然不如一次性处理所有相关列高效。

为了解决这些问题,我们需要一种更高效、更具通用性的矢量化方法。

2. 基于布尔掩码的矢量化映射方法

Pandas 提供了强大的工具来构建和应用布尔掩码,实现对 DataFrame 的高效条件性修改。核心思想是创建一个与原始 DataFrame 形状相似的布尔矩阵,该矩阵的 True 值指示应保留原始数据,False 值指示应替换为默认值(如 'NA')。

2.1 核心思路

  1. 定义映射规则: 使用字典明确指定每个“键”值对应哪些目标列是有效的。
  2. 生成布尔掩码: 将映射规则转换为一个布尔 DataFrame,其中行代表“键”,列代表数据列,True 表示该键下该列有效。
  3. 对齐并应用掩码: 将生成的布尔掩码与原始 DataFrame 的“键”列对齐,然后使用 DataFrame.where() 方法一次性应用到所有目标列。

2.2 实现步骤与代码示例

首先,定义我们的映射规则,即哪个 key 对应哪些列是有效的:

import pandas as pd
import numpy as np

# 重新创建原始 DataFrame
data = {
    'key': ['key1', 'key2', 'key3', 'key1', 'key2'],
    'colA': ['value1A', 'value2A', 'value3A', 'value4A', 'value5A'],
    'colB': ['value1B', 'value2B', 'value3B', 'value4B', 'value5B'],
    'colC': ['value1C', 'value2C', 'value3C', 'value4C', 'value5C'],
    'colD': ['value1D', 'value2D', 'value3D', 'value4D', 'value5D']
}
df = pd.DataFrame(data)

# 1. 定义键与目标列的映射关系
# 例如:'key1' 对应 'colA' 和 'colD'

以上就是基于键值条件高效映射 Pandas DataFrame 多列数据的详细内容,更多请关注其它相关文章!


# 解决问题  # 视频的营销推广  # 哈尔滨网站维护优化  # 如何上商城链接网站推广  # 越秀知识营销推广  # 宜昌外贸网站建站推广企业  # 石家庄高级网站建设报价  # 网站影响推广吗  # 电子商务网站推广含义  # seo的优化营销  # 怎样优化新网站引流推广  # 工具  # 数据处理  # 中文网  # 相关文章  # 是一个  # 矢量化  # 键值  # 多维  # 掩码  # 布尔  # 数据清洗 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 优化推广96088 】 【 技术知识133117 】 【 IDC资讯59369 】 【 网络运营7196 】 【 IT资讯61894


相关推荐: 如何在CSS中使用伪类选择器_hover实现悬停效果  《豆瓣》私信用户方法  阿里旺旺电脑网页版入口 阿里旺旺电脑版网页登录入口  如何解决Casbin日志与应用日志不统一的问题,使用casbin/psr3-bridge实现无缝集成  视频转蓝光m2ts格式  火柴人战争网页版在线玩  江苏大剧院会员卡购买步骤  oppo手机如何通过下拉通知栏截图_oppo手机通知栏快捷截图方法  《单词速记宝》设置学习计划方法  《糖豆》添加舞曲方法  Leaflet地图弹出窗口图片动态显示:避免缺失图标的专业指南  火狐浏览器无法自动更新怎么办 手动更新火狐浏览器到最新版本【解决】  Dash应用中自定义HTML页面标题与网站图标(F*icon)的实用指南  vivo手机视频通话美颜怎么设置_vivo视频通话美颜开启方法  发布小红书怎么屏蔽粉丝?屏蔽粉丝能看到吗?  火狐浏览器如何刷新修复浏览器 火狐浏览器“重置Firefox”功能详解  邮政快递寄件查询入口 邮政快递收件查询入口  喜茶GO更换登录账号方法  《tt语音》超级玩家开通方法  红手指专业版app注册教程  123平台官方登录入口 123邮箱网页端在线沟通工具  研招网官方网站招生平台入口_中国研究生招生信息网官网登录  Python测试中模块导入路径解析的最佳实践  之了课堂app做题入口  如何取消数字签名  C#解析来自网络的XML流数据 实时错误处理与重试机制  《随手记》关闭首页消息推送方法  Win11怎么设置分辨率 Win11显示设置调整分辨率及刷新率修改  J*aScript实现网页表单实时输入字段比较与验证教程  《雷电模拟器》截图方法介绍  diskgenius分区工具如何设置Bios启动项  宝妈做视频号该写什么标签话题?宝妈关注的话题有哪些?  支付宝如何解绑云闪付_支付宝与云闪付账户关联解除方法  聚水潭ERP后台管理系统登录 聚水潭ERP官方登录通道  c++类和对象到底是什么_c++面向对象编程基础  yy漫画登录页面官方入口_yy漫画在线阅读网址入口  虫虫漫画绿色安全入口_虫虫漫画绿色安全入口安全看漫画  歌词怎么展示在|直播|间视频号?有什么注意事项?  《淘票票》添加到苹果钱包教程  C++中的explicit关键字有什么作用_C++类型转换控制与explicit使用  Lar*el Socialite单设备登录策略:实现用户唯一会话管理  《华夏千秋》龙女试炼功法获取方法  如何在Podman容器中运行Composer_Docker替代品Podman的PHP与Composer容器化实践  一加 Ace 6V 快充无法启用_一加 Ace 6V 充电优化  《KARDS》冬季扩展包“国土阵线”上线!全新“协力”机制改变战场格局  Windows Audio服务启动失败怎么办_电脑没声音的终极服务修复法【修复】  《U校园》学生登录入口2025  电脑视频号|直播|如何分享屏幕  《海豚家》注销账号方法  电子白板帮助菜单使用指南 

 2025-11-29

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

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

点击免费数据支持

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

运城市盐湖区信雨科技有限公司


运城市盐湖区信雨科技有限公司

运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。

 8156699

 13765294890

 8156699@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.