我有一个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')
非常感谢!!
答案 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