如何在具有相同值的其他列的基础上创建一个递增值的列

问题描述 投票:0回答:1

全部

我有一个数据框如下

df = pd.DataFrame.from_dict({'A':[1,1,2], 'B':[10,20,14], "C":[30,40,20]})

enter image description here

如何创建新列,例如

newCol
,这取决于列
A
。如果
A
处的值保持不变,则
newCol
将以递增的整数填充。如果
A
中有 diff 值,这里是
2
,那么
newCol
的值将重置并再次开始增加。

谢谢你。

enter image description here

python pandas numpy
1个回答
0
投票

代码

grp = df['A'].ne(df['A'].shift()).cumsum()
df['newCol'] = df['A'].groupby(grp).cumcount().add(1)

df:

   A   B   C  newCol
0  1  10  30       1
1  1  20  40       2
2  2  14  20       1
© www.soinside.com 2019 - 2024. All rights reserved.