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

Pandas筛选Category列含'Insulated'的行失败,求解决方案

解决Pandas分组后筛选数组列的问题

问题原因

你分组时用了agg({'Category': 'unique'}),导致binned里的Category列每个值都是数组/列表,不是单个字符串:

  • .str.contains('Insulated')是针对字符串列的方法,对数组列会返回NaN,因为无法识别数组类型
  • binned[binned['Category'].isin(...)]是检查整个数组是否完全等于列表里的某一项,而不是数组里是否包含列表中的元素,所以自然找不到匹配行

解决方案

方法1:直接检查数组内的元素(推荐)

用apply遍历每个数组,判断是否包含目标类别:

# 筛选包含'Insulated Down'或'Insulated Synthetic'的行
filtered = binned[binned['Category'].apply(lambda arr: any(cat in ['Insulated Down', 'Insulated Synthetic'] for cat in arr))]

# 如果要筛选所有包含'Insulated'关键字的类别(不管是Down还是Synthetic)
filtered = binned[binned['Category'].apply(lambda arr: any('Insulated' in cat for cat in arr))]

方法2:先展开数组再筛选

如果需要查看每个类别对应的Bin Location细节,可以先把数组列展开成多行,再筛选:

# 将Category数组展开,每个类别单独占一行
unbinned_df = binned.explode('Category')

# 筛选目标类别
filtered_unbinned = unbinned_df[unbinned_df['Category'].isin(['Insulated Down', 'Insulated Synthetic'])]

# 如果需要回到按Bin Location分组的结果,去重即可
filtered = filtered_unbinned.drop_duplicates('Bin Location')

验证结果

可以先运行print(binned['Category'].head())查看列的结构,确认是数组类型后,再执行筛选代码验证结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 13:21:00