Python 但仅返回值。计数()>;1.

Python 但仅返回值。计数()>;1.,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个带有用户id的数据框,是users['user id']的结果。nunique()返回用户的唯一计数。users['user id'].value_counts()返回每个唯一用户id的计数。是否有一种方法可以将这两种方法结合起来,其中我需要出现多次(即2个或更多)的用户id的数量 非常感谢任何建议您可以在值\u计数的输出上使用掩码: >>> import pandas as pd >>> d = {'user_id': ['Apple', 'Bana

我有一个带有用户id的数据框,是
users['user id']的结果。nunique()
返回用户的唯一计数。
users['user id'].value_counts()
返回每个唯一用户id的计数。是否有一种方法可以将这两种方法结合起来,其中我需要出现多次(即2个或更多)的用户id的数量


非常感谢任何建议

您可以在
值\u计数的输出上使用掩码

>>> 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

您可以在
值\u计数的输出上使用掩码

>>> 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)
创建一个掩码来查看重复的值,这样您就可以只看到数据帧中的值,这些值在

mask=users['user id'].duplicated(keep=False)
print(users[mask])

现在,如果您想知道它们总共有多少个,您可以执行
users[mask].count()
,但您也可以使用
df[mask].groupby(by='user id').count()
来检查每个用户id重复出现的次数。还有其他方法可以获取多次出现的用户id的数量。您可以使用
duplicated(keep=False)
创建一个掩码来查看重复的值,这样您就可以只看到数据帧中的值,这些值在

mask=users['user id'].duplicated(keep=False)
print(users[mask])

现在,如果你想知道他们总共有多少人,你可以做
users[mask].count()
,但是你也可以用
df[mask].groupby(by='user id').count()

检查他们每个人重复了多少次,非常感谢!这当然有效。我最终通过sum(df.groupby('User ID').size()>1)解决了这个问题,但我认为您的方法更加直观。很乐意提供帮助。非常感谢!这当然有效。我最终通过sum(df.groupby('User ID').size()>1)解决了这个问题,但我认为您的方法更直观。很乐意提供帮助。