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

如何在Pandas DataFrame中筛选并删除含Unnamed的列?

如何删除Pandas DataFrame中所有名称包含"Unnamed"的列

嘿,这个需求在Pandas里其实有好几种简单的实现方式,思路和你熟悉的SQL LIKE '%Unnamed%' 非常类似,我给你拆解两种最常用的方法:

方法一:列表推导式筛选保留列

这种方式直观易懂,直接遍历所有列名,只保留不包含"Unnamed"的列:

# 重新赋值DataFrame,仅保留符合条件的列
df = df[[col for col in df.columns if 'Unnamed' not in col]]

原理很简单:我们生成一个只包含目标列名的列表,再用这个列表去索引原DataFrame,自动就剔除了所有带"Unnamed"的列。

方法二:用str.contains()匹配删除(更贴近SQL LIKE逻辑)

如果你想更贴近SQL的模糊匹配写法,可以用Pandas的str.contains()方法来定位目标列,再通过drop()删除:

# 定位所有列名包含"Unnamed"的列,然后删除
df = df.drop(columns=df.columns[df.columns.str.contains('Unnamed')])

这里df.columns.str.contains('Unnamed')会返回一个布尔数组,标记每一列的名称是否包含指定字符串;接着我们用这个数组筛选出要删除的列名,最后调用drop()完成删除。

额外小技巧

如果你的列名可能有大小写变体(比如"unnamed"或"UNNAMED"),可以添加case=False参数忽略大小写:

df = df.drop(columns=df.columns[df.columns.str.contains('Unnamed', case=False)])

举个实际例子,假设你的原DataFrame列名是:
['date', 'Unnamed: 1', 'workdate', 'Unnamed: 3', 'worknumber', 'Unnamed: 5', 'weight', 'Unnamed: 7']
用上面任意一种方法处理后,剩下的列就是:
['date', 'workdate', 'worknumber', 'weight']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:39:51