在大熊猫中分组并分配重复次数(第一,第二,第三)

时间:2017-08-17 18:37:23

标签: python pandas

我有一个python pandas数据框,如下所示:

date    userid
2017-03    a
2017-04    b
2017-06    b
2017-08    b
2017-05    c
2017-08    c

我想创建第三列,指示样本在该日期重复的次数,因此框架如下所示:

date    userid    repetition
2017-03    a    1
2017-04    b    1
2017-06    b    2
2017-08    b    3
2017-05    c    1  
2017-08    c    2

到目前为止,我按用户ID和日期对其进行了分组,但我只找到了获取总计数的方法

data['newcol'] = data.groupby(['sampleid'])['date'].transform('count')

非常感谢!!

1 个答案:

答案 0 :(得分:2)

使用cumcount

In [282]: df.groupby('userid').cumcount().add(1)
Out[282]:
0    1
1    1
2    2
3    3
4    1
5    2
dtype: int64

In [283]: df.assign(repetition=df.groupby('userid').cumcount().add(1))
Out[283]:
      date userid  repetition
0  2017-03      a           1
1  2017-04      b           1
2  2017-06      b           2
3  2017-08      b           3
4  2017-05      c           1
5  2017-08      c           2

或者,分配

In [285]: df['repetition'] = df.groupby('userid').cumcount().add(1)

In [286]: df
Out[286]:
      date userid  repetition
0  2017-03      a           1
1  2017-04      b           1
2  2017-06      b           2
3  2017-08      b           3
4  2017-05      c           1
5  2017-08      c           2