我对以下问题严重困扰了几天,并且感谢一些帮助,因为我是Python的新手。我试图通过使用Broadcasting而不是使用For循环(在90k行上花费20分钟)迭代DataFrame,这里是Dataframe样本:
(请注意,BLong应该是从0.7296开始的全'1',但显然Python迭代只是“每次命令的1次”
x['BBuyPx']= np.where((x['BReg1'] + x['BReg2'].shift(-1) == 2) & (x['BLong'].shift(-1) == 0), x['y'], 0.0)
x['BLong'] = np.where((x['BLong'].shift(-1) - x['BShort'].shift(-1)) == 1, 1, (np.where(x['BBuyPx'] != 0.0, 1, 0))).astype(int)
x['BShort'] = np.where(x['BLong'].shift(-1) == 0, 0, np.where(x['BSellPx'] != 0.0, 1, 0)).astype(int)
x['BSellPx'] = np.where(((x['BReg3'] + x['BReg2'].shift(-1) == 2) | (x['diff'] > sl)) & (x['BLong'].shift(-1) - x['BShort'].shift(-1) == 1), x['y'], 0.0)
谢谢!