我有以下几点:
df['PositionLong'] = 0
df['PositionLong'] = np.where(df['Alpha'] == 1, 1, (np.where(np.logical_and(df['PositionLong'].shift(1) == 1, df['Bravo'] == 1), 1, 0)))
这行基本上只接受df['Alpha'],而不接受df['PositionLong']。。它不能认出它,但我不明白为什么
它产生了:
df['Alpha'] df['Bravo'] df['PositionLong']
0 0 0
1 1 1
0 1 0
1 1 1
1 1 1
但是,我希望代码能做到:
df['Alpha'] df['Bravo'] df['PositionLong']
0 0 0
1 1 1
0 1 1
1 1 1
1 1 1
我相信解决方案是循环每一行,但这将需要很长时间
你能帮帮我吗
您正在寻找一个递归函数,因为前面的
PositionLong
值依赖于Alpha
,它本身用于确定PositionLong
但是
numpy.where
是一个正则函数,因此df['PositionLong'].shift(1)
作为一系列0
值进行计算,因为您使用0
初始化了该系列手动回路不需要昂贵。可以使用^{} 高效地实现递归算法:
结果:
相关问题 更多 >
编程相关推荐