Python 寻找至少有5笔交易的客户-寻找更整洁的方式

Python 寻找至少有5笔交易的客户-寻找更整洁的方式,python,pandas,Python,Pandas,我有一个包含客户事务的数据框架: customer_id transaction_amount 0 bob 12 1 bob 34 2 bob 56 3 bob 23 4 mary 12 5 mary

我有一个包含客户事务的数据框架:

   customer_id  transaction_amount
0          bob                  12
1          bob                  34
2          bob                  56
3          bob                  23
4         mary                  12
5         mary                  34
6         mary                   3
7         mary                  53
8         mary                  23
9         mary                  12
10        mary                   5
11         jim                   2
12         jim                   5
我想找到至少有5笔交易的客户

我现在做的很好,但看起来很乱。这是一个非常丑陋的团体

I按
customer\u id
分组,计算
交易金额

df.groupby('customer_id')['transaction_amount'].count()

customer_id
bob     4
jim     2
mary    7
然后我使用相同的groupby创建了一个掩码,但是我添加了过滤器
=5
,然后得到结果的
索引


mask = (df.groupby('customer_id')['transaction_amount'].count()>=5)

df.groupby('customer_id')['transaction_amount'].count()[mask].index

这给了我一个结果:

Index(['mary']
肯定有更整洁的方法吗?两个GroupBy站在一起感觉不对


这是我在工作中所做的一个操作,所以我想知道它是否可以更简洁或更“Pythic”。

import pandas as pd
df = pd.DataFrame({'name':['bob','bob','mary','mary','mary','jim']})
cnt = df.name.value_counts()
morethan3 = list(cnt.where(cnt>=3).dropna().index)
print(morethan3)
输出

['mary']

说明:
value\u counts()
return
pandas.Series
索引为调查对象,值为发生次数,用“<代码> >替换< <代码>楠< /COD>所有值> <代码> > <代码>,然后使用<代码>丢弃Non。DROPNA < /C> >最后取剩下的索引。

< P> >可以避免使用<代码> PANDASS。
import pandas as pd
df = pd.DataFrame({'name':['bob','bob','mary','mary','mary','jim']})
cnt = df.name.value_counts()
morethan3 = list(cnt.where(cnt>=3).dropna().index)
print(morethan3)
输出

['mary']

说明:
value\u counts()
return
pandas.Series
索引为调查对象,值为发生次数,我使用
将所有不是
=3
的值替换为
NaN
,然后使用
.dropna
放弃NaN,最后获取剩余的索引。

假设每一个具有客户id的行都是唯一的事务,您根本不需要groupby。您可以使用
值\u计数

s = df['customer_id'].value_counts()
s[s >= 5].index

假设具有customer_id的每一行都是唯一的事务,您根本不需要groupby。您可以使用
值\u计数

s = df['customer_id'].value_counts()
s[s >= 5].index

++ve代表好的简单的解决方案,干杯。++ve代表好的简单的解决方案,干杯。