用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来自维也纳
答案 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())