2013-08-07 3 views
2

У меня есть таблица в панд/питона и я делаю следующее:.Подсчет уникальных значений в панд сгруппированных объекта

grouped_data = df_comments_cols [ 'article_id'] GroupBy (df_comments_cols [ 'user_id'])

Теперь, чтобы подсчитать количество статей для каждого пользователя я следующее:

ct_grouped_data = grouped_data.count()

Приведенное выше количество идентификаторов товаров для каждого пользователя. Однако иногда есть несколько одинаковых идентификаторов статей для каждого пользователя (в том смысле, что пользователь взаимодействовал с этой статьей более одного раза), и я только хочу считать уникальные идентификаторы статей для каждого пользователя - есть ли быстрый способ сделать это?

Заранее спасибо.

ответ

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

Я открывших [GitHub вопрос для документирования «скрытые» методы, как это] (https://github.com/pydata/pandas/issues/4500). Я наткнулся на это сам, просто попробовав его. –

+0

Ницца спасибо за это – user7289

Смежные вопросы