计算重复集并添加为新列

时间:2013-08-15 12:24:38

标签: pandas frame

我的DataFrame就像:

col1   col2  col3
divq   .233     1
divq   .991     2
divq  1.821     3
divq  2.889     1
divq   .121     2
divq   .337     3

我需要一个新的col来跟踪/计算col3并添加它的出现次数。所以在上面的例子中,新的col4将寻找值1,2,3的序列,并标记为第一次出现然后继续并找到第二次出现的1-3:

col4
1
1
1
2
2
2

在我的真实数据框中,上面有10次迭代。

1 个答案:

答案 0 :(得分:2)

首先,你可以groupby第3列:

In [11]: g = df.groupby('col3')

然后(采用任意列)使用transformation枚举每组的结果:

In [12]: g['col1'].transform(lambda x: np.arange(len(x)))
Out[12]: 
0    0
1    0
2    0
3    1
4    1
5    1
Name: col1, dtype: object

并将其设置为第4列:

In [13]: df['col4'] = g['col1'].transform(lambda x: np.arange(len(x)))

In [14]: df
Out[14]: 
   col1   col2  col3 col4
0  divq  0.233     1    0
1  divq  0.991     2    0
2  divq  1.821     3    0
3  divq  2.889     1    1
4  divq  0.121     2    1
5  divq  0.337     3    1