pandas 我的 Dataframe 包含列-客户我想列出列中出现次数超过3次的客户的详细信息,而不是布尔序列

o3imoua4  于 2022-12-17  发布在  其他
关注(0)|答案(3)|浏览(113)

这是一个 Dataframe ,列“customer”具有重复值
df=pd. Dataframe ({“标识”:[1、2、3、4、5、6、7、8、9、10],“客户”:[“a”、"b“、”c“、" b "、" b "、”d“、" e "、" e "、”f“],”地址“:[”xx“、”yy“、”rr“、”yy“、”oo“、”ee“、”vv“、”zz“、”nn“、”cc“]})

want values repeating more than 3 times

df.groupby(['customer']).count()>3

result==〉在结果中我得到了布尔值
x一个一个一个一个x一个一个二个x

q3aa0525

q3aa05251#

您可以GroupBy.filter() Dataframe 和.drop_duplicates x x x "customer"列:

x = (
    df.groupby("customer")
    .filter(lambda x: len(x) > 3)
    .drop_duplicates("customer")
)

print(x)

图纸:

id customer address
1   2        b      yy
x6yk4ghg

x6yk4ghg2#

您可以使用groupby.transform和布尔索引:

df[df.groupby('customer')['customer'].transform('count').gt(3)]

输出:

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

7lrncoxx3#

使用isin修复代码

s = df.groupby(['customer'])['id'].count()>3
out = df.loc[df['customer'].isin(s[s].index)]
Out[389]: 
   id customer address
1   2        b      yy
3   4        b      yy
4   5        b      oo
5   6        b      ee

相关问题