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

Pandas如何筛选仅在单一分类下存在的Product对应的所有原始行

Pandas 需求实现方案

需求1:筛选仅在单一分类出现的Product对应的所有原始行

实现逻辑:先统计每个Product关联的唯一分类数量,仅保留关联分类数为1的Product对应的所有原始行,同分类下的重复行会自动保留。
实现代码:

# 统计每个Product对应的不同Category数量
prod_category_nunique = df.groupby('Product')['Category'].nunique()
# 筛选仅属于1个分类的Product列表
single_category_products = prod_category_nunique[prod_category_nunique == 1].index
# 过滤原DataFrame得到结果
result_df = df[df['Product'].isin(single_category_products)].copy()

原有代码问题说明:drop_duplicates仅对Category+Product的组合做去重,没有判断产品是否跨分类出现,无法实现剔除跨分类产品所有行的效果。

需求2:绘制指定分类下出现次数最多的产品柱状图

你遇到的分类内重复问题,大概率是Product字段存在格式不统一的情况,比如前后空格、大小写差异、不可见字符等,导致同一个产品被识别为多个不同值,先做字段清洗即可解决。
实现代码:

# 先清洗Product字段,统一格式避免统计误差
df['Product'] = df['Product'].str.strip() # 去除首尾空格
# 可按需添加其它清洗规则,比如统一大小写:df['Product'] = df['Product'].str.lower()

# 筛选分类63的Top10高频产品绘制横向柱状图
df[df['Category'] == 63]['Product'].value_counts().head(10).plot(kind='barh', figsize=(8, 5))

如果需要批量获取所有分类的Top高频产品,可使用分组统计:

# 每个分类取Top3高频产品
top_prod_per_category = df.groupby('Category')['Product'].apply(lambda x: x.value_counts().head(3))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 18:18:03