我试图在Python中创建一个新列,该列的值取决于其他列,并且取决于数据框中同一列的上一行。新列可以解释为以新数据字段重新开始的增量时间段。
我想要的输出是:如果数据字段等于上一个数据字段,则新列等于1。如果不等于,则新列值是上一行值+ 1。
In Excel, the formula looks like the below:
=IF(A2=A1,C1+1,1)
以下是我的数据:
Data Random_Columns
A Random
A Random
A Random
A Random
B Random
B Random
B Random
B Random
B Random
B Random
C Random
C Random
C Random
下面是我希望新专栏的样子:
Data Random_Columns New_Column
A Random 1
A Random 2
A Random 3
A Random 4
B Random 1
B Random 2
B Random 3
B Random 4
B Random 5
B Random 6
C Random 1
C Random 2
C Random 3
每次排序的数据帧开始一个新的不同值时,新列应刷新并从1重新启动其增量计数器。
从其他问题来看,我相信我们可以使用“移位”功能,但未能成功获得所需的输出。
答案 0 :(得分:0)
尝试此操作,在每个组上创建一个NewCol
,其默认值后跟DataFrame.groupby
,Series.cumsum
。
df['NewCol'] = (
df.assign(NewCol=1).groupby('Data').transform('cumsum')
)
Data NewCol
0 A 1
1 A 2
2 A 3
3 A 4
4 B 1
5 B 2
6 B 3
7 B 4
8 B 5
9 B 6
10 C 1
11 C 2
12 C 3