根据另一个列的值创建新列
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
我的 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