我的数据框是这样的:
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 次迭代。
最佳答案
首先你可以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
关于pandas - 计算重复集并添加为新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18252576/