2

我的数据框是这样的:

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 并添加它的出现。因此,在上面的 ex 中,一个新的 col4 将寻找值 1、2、3 的序列并将其标记为第一次出现,然后继续并找到 1-3 的第二次出现:

col4
1
1
1
2
2
2

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

4

1 回答 1

2

首先,您可以在第groupby3 列:

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

然后(取任意列)使用转换来枚举每组的结果:

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
于 2013-08-15T12:36:06.620 回答