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

如何筛选DataFrame中出现次数超过3次的客户详情?

获取高频客户的详细记录

要拿到出现次数超过3次的客户的所有行数据,不用纠结groupby().count()>3的布尔结果,直接用下面两种方法就能搞定:

方法一:先筛客户再过滤数据

  1. 先用value_counts()统计每个客户的出现次数,挑出次数>3的客户
  2. 用isin()在原DataFrame里匹配这些客户,得到他们的所有记录
import pandas as pd

# 你的示例DataFrame
df = pd.DataFrame({
    'id':[1,2,3,4,5,6,7,8,9,10],
    'customer':['a','b','c','b','b','b','d','e','e','f'],
    'address':['xx','yy','rr','yy','oo','ee','vv','zz','nn','cc']
})

# 筛选出现次数>3的客户
top_customers = df['customer'].value_counts()[lambda x: x > 3].index

# 提取这些客户的所有记录
result = df[df['customer'].isin(top_customers)]
print(result)

输出结果:

id customer address
1   2        b      yy
3   4        b      yy
4   5        b      oo
5   6        b      ee

方法二:用transform直接标记每行的客户次数

这种方法不用单独提取客户名单,直接给每行加上对应客户的出现次数,再过滤:

# 给每行添加对应customer的出现次数
df['customer_count'] = df.groupby('customer')['id'].transform('count')

# 筛选次数>3的行,最后删掉临时列
result = df[df['customer_count'] > 3].drop(columns='customer_count')
print(result)

得到的结果和方法一完全一致,适合不想额外生成客户列表的场景。

内容的提问来源于stack exchange,提问作者Bhushan Deshmukh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 13:46:28