Pandas - 根据先前计算的行值计算行值

时间:2018-01-02 14:32:46

标签: python pandas

用pandas解决以下问题的最有效方法是什么?:

让我们跟随df:

        v1    v2   
index
0       1     2     
1       5     6    
2       7     3     
3       9     4       
4       5     1     

现在我们想根据以下函数计算第三个值(v3):

if df.v1.shift(1) > df.v3.shift(1):
    df.v3 = max(df.v2, df.v3.shift(1))
else:
    df.v3 = df.v2

所需的输出应如下所示:

        v1    v2    v3
index
0       1     2     2
1       5     6     6
2       7     3     3
3       9     4     4    
4       5     1     4

THX& BR来自维也纳

1 个答案:

答案 0 :(得分:1)

我相信以下两行会得到你的结果:

df['v3'] = df['v2']
df['v3'] = df['v3'].where(df['v1'].shift(1)<=df['v3'].shift(1),pd.DataFrame([df['v2'],df['v3'].shift(1)]).max())