[英]Pandas nunique() but only return value.counts() > 1
我有一个带有用户 ID 的数据users['user id'].nunique()
, users['user id'].nunique()
返回用户的唯一计数。 users['user id'].value_counts()
返回每个唯一用户 id 的计数。 有没有办法将两者结合起来,我想要出现不止一次的用户 id 数量(即 2 个或更多)
非常感谢任何建议
您可以在value_counts
的输出上使用掩码:
>>> import pandas as pd
>>> d = {'user_id': ['Apple', 'Banana', 'Carrot', 'Carrot', 'Apple']}
>>> users = pd.DataFrame(data=d)
>>> users
user_id
0 Apple
1 Banana
2 Carrot
3 Carrot
4 Apple
>>> counts = users['user_id'].value_counts()
>>> counts
Carrot 2
Apple 2
Banana 1
Name: user_id, dtype: int64
>>> counts_greater_than_1 = counts[counts > 1]
>>> counts_greater_than_1
Carrot 2
Apple 2
Name: user_id, dtype: int64
>>> len(counts_greater_than_1)
2
还有其他方法可以获取多次出现的用户 ID 的数量。 您可以使用duplicated(keep=False)
来创建一个掩码来查看重复的值,这样您就可以看到只有出现多次的值的DataFrame
mask=users['user id'].duplicated(keep=False)
print(users[mask])
现在如果你想知道他们总共有多少你可以做users[mask].count()
但你也可以检查每次重复多少次df[mask].groupby(by='user id').count()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.