如何使用嵌套的np.where语句有条件地将上述情况复制到数据帧的列中

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

我在数据框df中有3列:在第3列“重复入场价”中,如果相同的原始数据的第2列“位置”为1,则我想复制同一列的上述情况上面的原始。否则,我想复制“进入价格重复”列中第一列“调整关闭”的大小写。此行为在XLS中使用3个“嵌套的if”非常简单,预期结果如下图所示[数据帧] [1] [1]:https://i.stack.imgur.com/0DzfQ.png

[使用以下代码在Python中执行此操作(使用2个嵌套的np.where,它不起作用,结果在下面的图片中,我不明白为什么。有人可以帮助和更正我的代码吗?(在“ position” = 1)的2次迭代之后复制停止

df2['Entry Price Repeat'] = df2['Adj Close']
df2['Entry Price Repeat'] = np.where(df2['Position'].shift(1) == 1, 
                                     np.where(df2['Position'] == 1,
                                              df2['Entry Price Repeat'].shift(1),
                                              -df2['Adj Close']
                                              )
                                    ,df2['Adj Close'])

[[上面代码的结果] [1] [1]:https://i.stack.imgur.com/bxoU7.png

我在数据框df中有3列:在第3列“重复入场价”中,如果相同的原始数据的第2列“位置”为1,则我想复制同一列的上述情况...

python pandas numpy where-clause algorithmic-trading
1个回答
0
投票

如果我正确理解了您的问题,那么下面的代码应该可以解决。首先,在“位置”等于0的当前行或上一行中填充“重复入场价”。完成后,只需在前面填充中使用熊猫fillna方法即可。

© www.soinside.com 2019 - 2024. All rights reserved.