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

如何使用df.loc排除名称含指定字符(如X)的DataFrame列?

用df.loc排除列名含指定字符的列

要通过df.loc实现排除列名包含特定字符(比如“X”)的列,核心思路是先筛选出列名不包含目标字符的列集合,再传递给df.loc的列索引参数。

方法1:列表推导式手动筛选列名

先遍历所有列名,挑出不含“X”的列,再用df.loc选取:

# 生成保留的列名列表:所有不含"X"的列
cols_to_keep = [col for col in df.columns if "X" not in col]
# 选取所有行 + 目标列
filtered_df = df.loc[:, cols_to_keep]

方法2:结合字符串方法+取反(更简洁)

利用pandas列名的str.contains方法配合取反符号~,直接在df.loc中完成筛选:

# ~表示取反,筛选列名不包含"X"的列
filtered_df = df.loc[:, ~df.columns.str.contains("X")]

小提示:如果你的列名存在非字符串类型(比如数字),需要先转成字符串再筛选:~df.columns.astype(str).str.contains("X")

补充:和df.filter的反向用法对比

你已经掌握df.filter(like='X')筛选含“X”的列,其实df.filter也能直接实现排除,用正则表达式参数:

# 用df.filter排除含"X"的列(作为拓展参考)
filtered_df = df.filter(regex=r'^(?!.*X).*$')

但如果指定要用df.loc,前面两种方法完全满足需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 23:25:25