我在pandas / python中有一个表,我正在执行以下操作:
grouped_data = df_comments_cols ['article_id']。groupby(df_comments_cols ['user_id'])
现在要计算每个用户的文章数量,我会执行以下操作:
ct_grouped_data = grouped_data.count()
以上计算每个用户的文章ID数量。但是,有时每个用户有多个相同的文章ID(从某种意义上说,用户已经多次与该文章进行过互动)而且我只希望计算每个用户的唯一文章ID - 是否有快速的方法来执行此操作?
提前致谢。
答案 0 :(得分:6)
我认为您可能正在寻找的是nunique
,您可以在GroupBy
对象上调用它,如下所示:
In [63]: df = DataFrame({'a': randn(1000, 1)})
In [64]: df['user_id'] = randint(100, 1000, size=len(df))
In [65]: df['article_id'] = randint(100, size=len(df))
In [66]: gb = df.article_id.groupby(df.user_id)
In [67]: gb.nunique()
Out[67]:
user_id
100 2
101 1
102 1
104 2
105 1
106 2
107 1
110 1
111 4
112 2
113 1
114 2
115 1
116 1
118 1
...
976 3
980 1
982 1
983 1
986 1
987 1
988 1
989 2
990 1
993 1
994 2
996 1
997 1
998 1
999 1
Length: 617, dtype: int64