讲师中心 微信公众号
AI工具推荐 视频效率加速

如何高效删除列名中包含特定关键词的 DataFrame 列

小雪姑娘_2119

小雪姑娘_2119

发布时间:2026-09-02 15:55:15

|

397人浏览过

|

来源于php中文网

原创

如何高效删除列名中包含特定关键词的 DataFrame 列

本文介绍三种无需显式循环、基于向量化操作的 Pandas 列筛选方法:布尔索引 + str.startswith()、drop() 配合条件掩码,以及正则表达式 filter(),兼顾可读性与性能。

本文介绍三种无需显式循环、基于向量化操作的 pandas 列筛选方法:布尔索引 + `str.startswith()`、`drop()` 配合条件掩码,以及正则表达式 `filter()`,兼顾可读性与性能。

在数据清洗过程中,经常需要根据列名特征批量删除列(例如剔除所有以 "post_" 开头但保留 "post_title" 的列)。若使用传统 for 循环或列表推导式,不仅代码冗长,还违背 Pandas 的向量化设计哲学——而真正“正确”的做法是利用其内置的字符串向量化方法与布尔索引机制。

以下以原始列名为例:
['sku', 'total_sales', 'post_author', 'post_date', 'post_date_gmt', 'product_type', 'post_title', 'post_excerpt', 'post_name', 'post_modified', 'post_modified_gmt', 'guid', 'post_type']

✅ 方法一:drop() + 向量化布尔掩码(推荐,清晰直观)

# 构建布尔掩码:列名以 'post_' 开头 且 不等于 'post_title'
mask = df_web.columns.str.startswith('post_') & (df_web.columns != 'post_title')
# 直接删除满足条件的列
df_web.drop(columns=df_web.columns[mask], inplace=True)

该方法逻辑直白、易于调试,str.startswith() 是向量化操作,性能优异;inplace=True 可避免重复赋值,节省内存。

✅ 方法二:布尔索引 + loc(函数式风格,不可变思维)

# 保留:列名等于 'post_title' OR 不以 'post_' 开头
df_web = df_web.loc[:, (df_web.columns == 'post_title') | ~df_web.columns.str.startswith('post_')]

此写法强调“保留规则”,符合函数式编程习惯,适合链式操作(如配合 assign()pipe()),且天然支持不可变操作(不修改原 DataFrame)。

✅ 方法三:正则 filter()(简洁但需理解正则逻辑)

# 使用负向先行断言:匹配不以 'post_' 开头,或虽以 'post_' 开头但后缀不是 'title' 的列名
df_web = df_web.filter(regex=r'^(?!post_(?!title))')

正则 ^(?!post_(?!title)) 含义为:

  • ^:字符串开头
  • (?!...):负向先行断言
  • post_(?!title):匹配 "post_"不紧接 "title" 的情况
  • 整体即排除所有 "post_XXX"XXX ≠ title),但保留 "post_title" 和其他无关列。

⚠️ 注意:正则虽一行解决,但可读性较低,建议仅在团队熟悉正则或需高度泛化(如多关键词/复杂模式)时采用。

? 最佳实践建议

  • 优先使用方法一或二:语义明确、调试友好、性能无损;
  • 避免在循环中调用 drop()(每次触发副本与索引重建,O(n²) 时间复杂度);
  • 列名筛选前,建议先验证掩码结果:print(df_web.columns[mask].tolist())
  • 若需复用逻辑,可封装为函数:
    def drop_columns_by_pattern(df, pattern, keep=None):
        mask = df.columns.str.contains(pattern) & ~(df.columns.isin([keep] if keep else []))
        return df.drop(columns=df.columns[mask])
    # 调用:df_web = drop_columns_by_pattern(df_web, r'^post_', keep='post_title')

掌握这些向量化技巧,不仅能提升代码执行效率,更是深入理解 Pandas 设计范式的起点。

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
音述AI
音述AI Hot

一款AI音频处理工具,主要用于音述AI是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区,适合需要提升相关任务效率的用户。

墨刀AI
墨刀AI Hot

一款AI图像与设计工具,主要用于产品经理的专属智能体,适合需要提升相关任务效率的用户。

Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

蛙蛙写作

一款AI论文写作工具,主要用于超级AI智能写作助手,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

UpDream
UpDream Hot

一款AI视频创作工具,主要用于哔哩哔哩推出的自研AI视频创作工具,适合需要提升相关任务效率的用户。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

LibLibAI
LibLibAI Hot

一款AI视频创作工具,主要用于国内领先的AI创意平台,以海量模型、低门槛操作与“创作-分享-商业化”生态,让小白与专业创作者都能高效实现图文乃至视频创意表达,适合需要提升相关任务效率的用户。

相关专题

更多
Python 时间序列分析与预测
Python 时间序列分析与预测

本专题专注讲解 Python 在时间序列数据处理与预测建模中的实战技巧,涵盖时间索引处理、周期性与趋势分解、平稳性检测、ARIMA/SARIMA 模型构建、预测误差评估,以及基于实际业务场景的时间序列项目实操,帮助学习者掌握从数据预处理到模型预测的完整时序分析能力。

280

2025.12.04

Python 数据清洗与预处理实战
Python 数据清洗与预处理实战

本专题系统讲解 Python 在数据清洗与预处理中的核心技术,包括使用 Pandas 进行缺失值处理、异常值检测、数据格式化、特征工程与数据转换,结合 NumPy 高效处理大规模数据。通过实战案例,帮助学习者掌握 如何处理混乱、不完整数据,为后续数据分析与机器学习模型训练打下坚实基础。

212

2026.01.31

Python数据分析与Pandas高级实战
Python数据分析与Pandas高级实战

本专题围绕 Python 数据分析展开,系统讲解 Pandas 的高级用法,包括数据清洗、透视表、时间序列分析以及多表合并与分组操作。通过实战案例,帮助开发者掌握高效处理与分析数据的方法,提高数据处理效率与分析能力。

271

2026.04.13

Vibeknow在线使用入口合集
Vibeknow在线使用入口合集

本专题汇总了Vibeknow在线创作视频的官方入口及网页版使用教程,涵盖PPT、PDF、Word等文档一键转讲解视频的核心操作,并整理了免费版水印规则与手机端浏览器访问指南,助你快速将知识内容视频化。

20

2026.09.21

NumPy随机数文件读写与dtype数据类型
NumPy随机数文件读写与dtype数据类型

本专题整理 NumPy 随机数、文件读写与 dtype 数据类型相关教程,覆盖 Generator/random、随机数种子、正态分布采样、npy/npz/CSV/TXT 保存读取、loadtxt/savetxt、memmap、大文件处理、astype 类型转换、结构化 dtype、整数溢出和精度丢失等场景。

0

2026.09.21

NumPy矩阵运算与线性代数计算
NumPy矩阵运算与线性代数计算

本专题整理 NumPy 矩阵运算与线性代数计算相关教程,覆盖矩阵乘法、dot 与 @ 运算符、逆矩阵、行列式、特征值与特征向量、SVD、线性方程组、欧氏距离、矩阵分解和大规模矩阵性能优化等内容,帮助读者掌握 np.linalg 与矩阵计算实战。

0

2026.09.21

NumPy广播机制数学运算与统计分析
NumPy广播机制数学运算与统计分析

本专题整理 NumPy 广播机制、数组数学运算与统计分析相关教程,覆盖广播规则、维度对齐、矩阵与数组加减除法、向量化计算、均值方差、分位数、中位数、直方图和 unique 频次统计等场景,帮助读者掌握 ndarray 高效计算与统计处理方法。

0

2026.09.21

NumPy数组创建索引切片与数据选择
NumPy数组创建索引切片与数据选择

本专题整理 NumPy 数组创建、索引、切片与数据选择相关教程,覆盖 np.array、zeros/ones、多维数组形状、基础切片、花式索引、布尔索引、条件筛选、视图与副本等常用场景,帮助读者系统掌握 ndarray 数据构造与高效提取方法。

0

2026.09.21

Aionclaw智能助手介绍
Aionclaw智能助手介绍

本专题汇总了AionClaw(AI龙虾助手)的功能介绍与在线使用入口。AionClaw是杭州趣猿人工智能有限公司推出的桌面级AI智能体,能直接在电脑上读写文件、运行脚本、操作浏览器,自动交付Word、PPT、Excel等成品。

40

2026.09.20

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn