我的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次迭代。
答案 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