
本文介绍如何利用 pandas 和 numpy 高效地根据 dataframe 中“键”列的值,有条件地映射和处理多列数据。针对传统 `numpy.select` 逐列操作的低效性,教程将展示如何通过构建布尔掩码结合 `dataframe.where()` 方法实现矢量化操作,从而优化数据清洗和转换流程,将不符合条件的列值替换为指定标记(如 'na')。
在数据处理中,我们经常需要根据某一“键”列的值,有条件地修改或保留 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
AI在线智能生成PPT
113
查看详情
为了解决这些问题,我们需要一种更高效、更具通用性的矢量化方法。
Pandas 提供了强大的工具来构建和应用布尔掩码,实现对 DataFrame 的高效条件性修改。核心思想是创建一个与原始 DataFrame 形状相似的布尔矩阵,该矩阵的 True 值指示应保留原始数据,False 值指示应替换为默认值(如 'NA')。
首先,定义我们的映射规则,即哪个 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 】
相关推荐:
J*aScript实现网页表单实时输入字段比较与验证教程
包子漫画在线观看入口 包子漫画网正版全集链接
263企业邮箱如何设置邮件转发功能
修复UI元素交互障碍:从“开始”按钮到信息框的平滑过渡实现
word表格如何按某一列内容进行排序_Word表格按列排序方法
PHP utf8_encode 字符编码转换陷阱与解决方案
12306不能订票的时间段是固定的吗? | 节假日购票时间有无变化
德邦快递会员怎么开通
使用逻辑应用(Logic Apps)自动处理邮件附件中的XML到Excel
一点万象签到领积分指南
晓晓优选app支付宝绑定方法
如何在 WordPress 前端实现内容提交:古腾堡编辑器的替代方案与实践
Sublime怎么格式化HTML代码_Sublime前端代码美化插件使用指南
WPS长文档分栏排版不乱方法_WPS分栏+分节符报纸排版教程
济南公交卡手机充值指南
江苏大剧院会员卡购买步骤
VB表达式书写规则解析
支付宝如何解绑云闪付_支付宝与云闪付账户关联解除方法
Git命令与VS Code UI操作的对应关系解析
虫虫漫画绿色安全入口_虫虫漫画绿色安全入口安全看漫画
顺丰快递在线查询系统 顺丰快递官方查单入口
如何用Golang优化微服务间请求性能_Golang 微服务请求性能优化方法
实现可重用自定义Python Range类
中通快递官网指定查询 中通快递单号查询平台入口
学习通网页版个人登录_学习通网页版个人账户登录入口
PHP实现等比数列:构建数组元素基于前一个值递增的方法
优化响应式标题底部边框:CSS实现技巧与最佳实践
《360浏览器》设置摄像头权限方法
《随手记》关闭首页消息推送方法
如何查询个人病历记录
鸣潮历史学家灯塔位置一览
Microsoft Edge网页字体太淡看不清怎么办_Microsoft Edge字体渲染优化技巧
可米酷漫画在线阅读入口_ 可米酷漫画官网直达链接
抖音火山版如何进行提现
《知到》打卡课程方法
C++如何使用CMake构建项目_C++ CMakeLists.txt编写入门教程
《豆瓣》私信用户方法
如何配置VS Code作为您Git操作的默认编辑器
Win10通知横幅停留时间修改 Win10自定义通知显示时长【技巧】
如何解决Casbin日志与应用日志不统一的问题,使用casbin/psr3-bridge实现无缝集成
SQLAlchemy 2.0 与 Pydantic 模型类型安全集成指南
圆通快递官方入口不需要登录 在线查询入口快速查询
泰拉瑞亚水晶无法放置问题
12306APP选座怎么选充电位置_12306APP带充电插座座位选择方法与技巧
Go Goroutine调度与并发执行深度解析
Win10如何关闭开机锁屏界面_Windows10跳过锁屏直接登录设置
聚水潭ERP后台管理系统登录 聚水潭ERP官方登录通道
英国搜索:多数英国人认为语言搜索是未来搜索
Apple Music无故扣费引质疑
解决Flex容器横向滚动内容截断与偏移问题
2025-11-29
运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。