本文介绍如何利用 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这种方法虽然能达到目的,但存在明显局限性:
为了解决这些问题,我们需要一种更高效、更具通用性的矢量化方法。
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'
# 工具
# 数据清洗
# numpy
# pandas
# select
# 布尔
# 掩码
# 矢量化
# 是一个
# 数据处理
# 将不
# 能达到
# 更具
# 转换为
# 创建一个
相关文章:
建站主机与虚拟主机有何区别?如何选择最优方案?
建站OpenVZ教程与优化策略:配置指南与性能提升
网站制作专业公司有哪些,如何制作一个企业网站,建设网站的基本步骤有哪些?
小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?
高防服务器:AI智能防御DDoS攻击与数据安全保障
建站IDE高效指南:快速搭建+SEO优化+自适应模板全解析
如何选择建站程序?包含哪些必备功能与类型?
如何在企业微信快速生成手机电脑官网?
股票网站制作软件,网上股票怎么开户?
网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?
品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?
如何用y主机助手快速搭建网站?
如何通过PHP快速构建高效问答网站功能?
如何在云主机上快速搭建多站点网站?
建站之星与建站宝盒如何选择最佳方案?
C++时间戳转换成日期时间的步骤和示例代码
焦点电影公司作品,电影焦点结局是什么?
网站制作服务平台,有什么网站可以发布本地服务信息?
建站为何优先选择香港服务器?
制作网站的基本流程,设计网站的软件是什么?
建站主机选购指南:核心配置优化与品牌推荐方案
公司网站制作价格怎么算,公司办个官网需要多少钱?
移民网站制作流程,怎么看加拿大移民官网?
建站之星如何快速更换网站模板?
制作网站的公司有哪些,做一个公司网站要多少钱?
如何快速配置高效服务器建站软件?
如何挑选高效建站主机与优质域名?
青岛网站建设如何选择本地服务器?
香港服务器选型指南:免备案配置与高效建站方案解析
南阳网站制作公司推荐,小学电子版试卷去哪里找资源好?
制作网站的模板软件,网站怎么建设?
高防服务器租用指南:配置选择与快速部署攻略
如何在阿里云域名上完成建站全流程?
已有域名和空间如何快速搭建网站?
江苏网站制作公司有哪些,江苏书法考级官方网站?
网站制作需要会哪些技术,建立一个网站要花费多少?
如何用花生壳三步快速搭建专属网站?
微信网站制作公司有哪些,民生银行办理公司开户怎么在微信网页上查询进度?
,怎么在广州志愿者网站注册?
IOS倒计时设置UIButton标题title的抖动问题
建站之星免费版是否永久可用?
平台云上自主建站:模板化设计与智能工具打造高效网站
制作农业网站的软件,比较好的农业网站推荐一下?
制作证书网站有哪些,全国城建培训中心证书查询官网?
制作公司内部网站有哪些,内网如何建网站?
青浦网站制作公司有哪些,苹果官网发货地是哪里?
简历在线制作网站免费版,如何创建个人简历?
制作网站的网址是什么,请问后缀为.com和.com.cn还有.cn的这三种网站是分别是什么类型的网站?
建站之星安全性能如何?防护体系能否抵御黑客入侵?
网站制作免费,什么网站能看正片电影?
*请认真填写需求信息,我们会在24小时内与您取得联系。