pandas - 如何按计数和条件查询
问题描述
我有一个充满客户的数据集。我正在尝试按购买 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 个项目的客户条目,但去掉了他们购买的其他项目的条目。有没有办法调整查询以保留它们?谢谢 !
解决方案
如果需要所有具有A
orB
值的组,请Series.isin
使用GroupBy.transform
and GroupBy.any
:
df[df['ITEM'].isin(['A','B']).groupby(df['CUS_ID']).transform('any')]
推荐阅读
- macos - macOS 下 Vscode SSH 跳转失败
- excel - ETL:转换/清理 excel 文件
- json - 使用 Google colab 时出现 JSONDecode 错误
- ibm-midrange - RPGLE(As400)中GOTO和EXSR的重要区别是什么
- javascript - 函数在函数中声明并稍后调用时的函数范围
- python-3.x - 在不和谐机器人上播放音乐的替代方法
- r - 使用 R 在 ggplot2 中添加图例
- c - 如何通过查看代码来判断子进程是后台进程还是前台进程?
- gitlab - 添加可选按钮以编辑 Gitlab 合并请求上的提交消息
- sql-server - 如何在控制台中打印 Cypress SQL Srver (cy.sqlServer) 命令的输出