2017-08-17 57 views
0

我有一个python熊猫数据帧,看起来像这样:分组在熊猫和分配重复数(第一,第二,第三)

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 

到目前为止,我的用户名和日期分组,但我只找到获得总计数的方式

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

非常感谢!

回答

1

使用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 
+0

你比我写的问题更快!非常感谢! – PatVW

相关问题