我有以下数据帧:
temp = pd.DataFrame({
'long_entry':[False,True,False,False],
'long_exit':[False,False,False,True]
})
long_entry long_exit
0 False False
1 True False
2 False False
3 False True
我添加了另外两个包含0的列,这些列将接收条件值:
temp['open_long']=0
temp['close_long']=0
temp['long']=0
long_entry long_exit open_long close_long long
0 False False 0 0 0
1 True False 0 0 0
2 False False 0 0 0
3 False True 0 0 0
我所要做的是按照以下条件填充开长、关长和长:
对于所有3列,第一行将为0,然后对于下一列:
打开长时间:如果前一行long_entry == 0
和同一行long_entry
==True
,则open_long = 1
,否则open_long = 0
close\u long如果前一行long
值等于1
和同一行long_exit == True
,则close_long = -1
,否则close_long= 0
long:刚好等于同一行open_long
+同一行close_long
+上一行long
生成的数据帧是:
long_entry long_exit open_long close_long long
0 False False 0 0 0
1 True False 1 0 1
2 False False 0 0 1
3 False True 0 -1 0
我可以用loop来完成,但是因为我每天都要处理10年的数据,所以要花很多时间才能完成。用Python解决这个问题的最佳方法是什么?你知道吗
您可以使用
shift()
方法执行以下操作。你知道吗结果是:
然后你可以做:
等等。这些矢量化操作在大型数据集上应该非常快。你知道吗
相关问题 更多 >
编程相关推荐