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

如何用更简洁方式通过.intersection()筛选DataFrame保留指定列?

更简洁的DataFrame列子集化写法

当你要保留的列远多于要移除的列时,完全不用定义几十项的保留列表,换个思路用取反/删除的方式会简洁很多,下面是几种实用方案:

1. 用drop()直接删不需要的列(最推荐)

只需要维护少数几个要移除的列名,一行代码搞定:

remove_features = [remove1, remove2, remove3]
df_keep = df.drop(remove_features, axis=1)

怕某些列不存在报错的话,加个errors='ignore'参数自动忽略不存在的列:

df_keep = df.drop(remove_features, axis=1, errors='ignore')

2. 用~结合isin()实现取反筛选

如果你偏好基于“保留列”的逻辑,也可以用取反来筛选(不过这种场景下不如drop简洁,适合保留列少的情况):

keep_features = [keep1, keep2, ..., keep30]
# 筛选出在保留列表里的列
df_keep = df.loc[:, df.columns.isin(keep_features)]
# 对应的取反写法(删除保留列之外的):
# df_remove = df.loc[:, ~df.columns.isin(keep_features)]

3. 直接索引列名列表(前提是列都存在)

如果能百分百确定所有要保留的列都在DataFrame里,直接索引就行,比intersection少写点代码:

df_keep = df[keep_features]

注意:这种方式如果列名不存在会报错,而intersection会自动忽略不存在的列,这点要区分开。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 04:20:04