<p>在不大量修改代码的情况下,我得出了以下结论:</p>
<pre><code>import numpy as np
for row,hit in hits.iterrows():
print ("row", row)
print ("hit",hit)
forwardRows = a[a.index.values > row]
targetHit = forwardRows[(hit['target1'] <= forwardRows['price'].values)].head(1).index.values
targetMiss = forwardRows[(hit['target2'] >= forwardRows['price'].values)].head(1).index.values
if targetHit>targetMiss:
a.loc[row,"target_miss_time"] = targetMiss
else:
a.loc[row,"target_hit_time"] = targetHit
price reversal target1 target2 target_hit_time target_miss_time
09:00:00 1 NaN NaN NaN NaN NaN
10:00:00 0 NaN NaN NaN NaN NaN
11:00:00 3 NaN NaN NaN NaN NaN
12:00:00 4 NaN NaN NaN NaN NaN
13:00:00 7 NaN NaN NaN NaN NaN
14:00:00 6 6.5 7.5 0.0 [20:00:00] NaN
15:00:00 5 NaN NaN NaN NaN NaN
16:00:00 4 NaN NaN NaN NaN NaN
17:00:00 2 NaN NaN NaN NaN NaN
18:00:00 2 NaN NaN NaN NaN NaN
19:00:00 4 NaN NaN NaN NaN NaN
20:00:00 8 NaN NaN NaN NaN NaN
</code></pre>
<p>这仍有待改进,因为targetHit、targetMiss返回一个数组,您需要检查数组中是否有任何元素,以及两个数组中是否都有元素—您需要比较第一个元素。现在它只在一个数组为空时工作。你知道吗</p>