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

如何在Pandas中筛选分类列的指定类别数据?

Pandas筛选指定类别DataFrame的正确方法

问题场景

现有如下Pandas DataFrame:

id      gender  articleType  baseColour  season   usage
0   15970   Men     Shirts       Blue        Fall     Casual
1   39386   Men     Jeans        Blue        Summer   Casual
2   59263   Women   Watches      Silver      Winter   Casual
3   21379   Men     Sport Pants  Black       Fall     Casual
4   53759   Men     Tshirts      Grey        Summer   Casual

其中articleType列包含约60个不同类别,需要仅保留以下指定类别:

category = ['Tshirts', 'Shirts', 'Casual Shoes', 'Watches', 'Beauty Product', 'Sports Shoes', 'Kurtas', 'Tops', 'accessories', 'Briefs', 'Sport Pants', 'Shorts', 'Formal Shoes', 'Jeans', 'Trousers', 'Kurtis', 'Dresses', 'Sarees', 'Jackets']

尝试使用df[(df['articleType'] == category)]筛选时,出现报错:

ValueError: ('Lengths must match to compare', (44077,), (19,))

正确解决方法

报错原因是直接用==做比较时,Pandas会尝试逐元素匹配,但DataFrame的articleType列长度(44077)和category列表长度(19)不匹配,导致无法对比。

正确的做法是使用Pandas的isin()方法,它专门用于检查元素是否存在于指定列表中:

# 筛选符合指定类别的行
filtered_df = df[df['articleType'].isin(category)]

也可以使用query()方法,语法更简洁直观:

filtered_df = df.query("articleType in @category")

isin()会返回一个布尔型Series,标记每一行的articleType是否在目标列表内,用这个布尔Series索引原DataFrame即可得到筛选结果;query()方法中用@符号引用外部定义的category变量,实现相同的筛选逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 19:35:28