首页 > 解决方案 > 如何按计数和条件查询

问题描述

我有一个充满客户的数据集。我正在尝试按购买 5 件或更多商品的人过滤数据,然后保留购买 2 件特定商品的客户列表。

*编辑-数据框看起来像这样

CUS_ID 物品 日期
1000 一种 1996/06/09
1001 1999/03/24
1002 1999/03/24
1002 C 1999/03/24
1002 一种 1999/03/24
1002 D 1999/03/24
1002 1999/03/24
1002 F 1999/03/24

我使用以下

df1.groupby('CUS_ID').filter(lambda x: x['CUS_ID'].count()>4)
df1.query('ITEM=="A" or ITEM=="B"')

虽然它确实满足了查询的第一部分,但第二部分显然只是保留了带有这 2 个项目的客户条目,但去掉了他们购买的其他项目的条目。有没有办法调整查询以保留它们?谢谢 !

标签: pandasdataframe

解决方案


如果需要所有具有AorB值的组,请Series.isin使用GroupBy.transformand GroupBy.any

df[df['ITEM'].isin(['A','B']).groupby(df['CUS_ID']).transform('any')]

推荐阅读