You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Pandas中删除所有以‘_o’结尾的DataFrame列?

删除Pandas DataFrame中所有以‘_o’结尾的列

没问题,我来给你几种简单高效的方法搞定这个需求——毕竟处理列名后缀筛选在Pandas里太常见了,刚好你已经知道filter处理前缀的思路,那我们把逻辑反过来就行!

方法1:用filter配合正则表达式取反

你之前用filter处理前缀,那要删后缀的话,可以通过正则的负向断言来匹配不以‘_o’结尾的列,实现保留目标列、间接删除指定后缀列的效果:

df = df.filter(regex='^((?!_o$).)*$')

解释一下:这个正则里的(?!_o$)是负向断言,确保列名的结尾不是_o,filter会自动保留符合这个规则的列,相当于删掉了所有以_o结尾的列。

方法2:用str.endswith做直观筛选(可读性拉满)

这种方法新手也能一眼看懂,先筛选出所有不需要删除的列,再重新索引DataFrame:

# 先收集要保留的列名
cols_to_keep = [col for col in df.columns if not col.endswith('_o')]
df = df[cols_to_keep]

或者用更简洁的链式写法:

df = df.loc[:, ~df.columns.str.endswith('_o')]

这里的~是取反操作,df.columns.str.endswith('_o')会生成一个布尔数组标记哪些列是目标后缀,取反后就是要保留的列,用loc直接筛选即可。

方法3:用drop直接删除目标列

如果你想先确认要删的列再动手,可以先筛选出所有以‘_o’结尾的列,再用drop删除:

cols_to_drop = df.columns[df.columns.str.endswith('_o')]
# 可以先打印cols_to_drop确认一下列名,避免误删
print(cols_to_drop)
df = df.drop(cols_to_drop, axis=1)

这种方法适合需要先校验删除列表的场景,容错性更高。

小提示:如果你的DataFrame数据量很大,优先选filter或loc的方法,性能会略优一点;日常使用中这几种方法差别不大,选你看着最顺手的就行~

内容的提问来源于stack exchange,提问作者aabujamra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 06:52:36