在python pandas数据帧中按唯一值分组

时间:2015-12-01 15:15:24

标签: python pandas

我有一个像这样的数据名称

                      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。

请提出任何想法。

最佳,

-

1 个答案:

答案 0 :(得分: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))可能也会起作用。