根据另一个列的值创建新列

Create new column based on values from another one

我的 df 如下所示:

column1  column2 
x        X22
x        X26        
x        X287
y        X26
y        X22
y        X287
y        X26
z        X27
c        X29
c        X22

我想创建一个新列,输出应该是这样的:

column1  column2 column3
x        X22      1
x        X26      2 
x        X287     3
y        X26      1
y        X22      2
y        X287     3
y        X26      4
z        X27      1
c        X29      1
c        X22      2

如您所见,我需要一个基于第 1 列的值从 1 到 x 的列。因此,如果在 column1 中我们有值“x”,我想创建一个值从 1 到 3 的第 3 列。我不能使用 groupby,因为我必须保留 column2。你有什么想法吗?

问候 托马斯

您可以使用groupby+cumcount:

df['column3'] = df.groupby('column1').cumcount().add(1)

输出:

  column1 column2  column3
0       x     X22        1
1       x     X26        2
2       x    X287        3
3       y     X26        1
4       y     X22        2
5       y    X287        3
6       y     X26        4
7       z     X27        1
8       c     X29        1
9       c     X22        2