2015-12-01 3 views
0

У меня есть datafame, который идет как этогоГруппировки по уникальным значениям в питоне панд dataframe

     id rev  committer_id 
date     
1996-07-03 08:18:15  1 76620 1 
1996-07-03 08:18:15  2 76621 2 
1996-11-18 20:51:08  3 76987 3 
1996-11-21 09:12:53  4 76995 2 
1996-11-21 09:16:33  5 76997 2 
1996-11-21 09:39:27  6 76999 2 
1996-11-21 09:53:37  7 77003 2 
1996-11-21 10:11:35  8 77006 2 
1996-11-21 10:17:50  9 77008 2 
1996-11-21 10:23:58  10 77010 2 
1996-11-21 10:32:58  11 77012 2 
1996-11-21 10:55:51  12 77014 2 

Я хотел бы группу по квартальным периодам, а затем показать количество уникальных записей в committer_id колонки. Столбцы id и rev на данный момент на данный момент не используются.

Я хотел бы иметь результат в виде следующего committer_id

date  
1996-09-30 2 
1996-12-31 91 
1997-03-31 56 
1997-06-30 154 
1997-09-30 84 

Фактические результаты агрегируются по количеству записей в каждый период времени, а не уникальных записей. Я использую следующее:

df[['committer_id']].groupby(pd.Grouper(freq='Q-DEC')).aggregate(np.size) 

Невозможно определить, как использовать np.unique.

Любые идеи, пожалуйста.

Бест,

-

ответ

2
df[['committer_id']].groupby(pd.Grouper(freq='Q-DEC')).aggregate(pd.Series.nunique) 

Должно работать для вас. Или df.groupby(pd.Grouper(freq='Q-DEC'))['committer_id'].nunique()

Ваша попытка с np.unique не работает, потому что возвращает массив уникальных предметов. Результат для agg должен быть скаляром. Так что .aggregate(lambda x: len(np.unique(x)), вероятно, тоже сработает.

+0

Все предлагаемые решения работали. Благодарю. – iganchev

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