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

Python 如何使用嵌套的np.where语句在数据帧的列中有条件地复制上述情况,python,pandas,numpy,where-clause,algorithmic-trading,Python,Pandas,Numpy,Where Clause,Algorithmic Trading,我的数据帧df中有3列:在第3列“重复输入价格”中,如果第2列“位置”的大小写为1,则我想复制同一列的上述大小写。否则,我想复制“重复输入价格”列中第一列“Adj Close”的情况。在XLS中使用3“嵌套if”可以非常简单地执行此行为,预期结果如下图所示 [Dataframe][1][1]: 在Python中使用下面的代码(使用2个嵌套的np.where,它不起作用,结果在下图中,我不明白为什么。有人可以帮助并更正我的代码吗?(在“position”=1的2次迭代后复制停止) [上面代码的结果

我的数据帧df中有3列:在第3列“重复输入价格”中,如果第2列“位置”的大小写为1,则我想复制同一列的上述大小写。否则,我想复制“重复输入价格”列中第一列“Adj Close”的情况。在XLS中使用3“嵌套if”可以非常简单地执行此行为,预期结果如下图所示 [Dataframe][1][1]:

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


[上面代码的结果][1][1]:

如果我正确理解了你的问题,下面的代码应该可以。首先,你用当前行或前一行填充“输入价格重复”,该“位置”等于0。完成后,你只需使用前面填充的pandas fillna方法

df2['Entry Price Repeat'] = df2['Adj Close']
df2['Entry Price Repeat'] = df2[(df2["Position"] == 0) | (df2["Position"].shift(1) == 0)]['Adj Close']
df2.fillna(method='ffill')

使用下面的代码,您应该得到与所需输出相同的结果。

如果我正确理解了您的问题,下面的代码应该可以做到。首先,您使用当前行或上一行填充“输入价格重复”,该“位置”等于0。完成后,您只需要使用前面填充的pandas fillna方法

df2['Entry Price Repeat'] = df2['Adj Close']
df2['Entry Price Repeat'] = df2[(df2["Position"] == 0) | (df2["Position"].shift(1) == 0)]['Adj Close']
df2.fillna(method='ffill')
使用下面的代码,您将获得与所需输出相同的结果