列公式取决于上一行的值,并以Python中的单独列为条件

时间:2020-07-24 12:51:04

标签: python excel pandas

我试图在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重新启动其增量计数器。

从其他问题来看,我相信我们可以使用“移位”功能,但未能成功获得所需的输出。

1 个答案:

答案 0 :(得分:0)

尝试此操作,在每个组上创建一个NewCol,其默认值后跟DataFrame.groupbySeries.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
相关问题