擅长:python、mysql、java
<p>假设一个窗口前面有<code>k</code>行,后面有<code>k</code>行,如我的评论中所述:</p>
<pre><code>import pandas as pd
Data = pd.DataFrame([[0,0], [10,0], [30,0], [50,1], [70,1], [90,1], [110,1]],
columns=['Time', 'Flag1'])
k = 1 # size of window: up to k rows before and up to k rows after
n = len(Data)
output = [0]*n
for i in range(n):
th = Data['Time'][i] + 35
j0 = max(0, i - k)
j1 = min(i + k + 1, n) # the +1 is because range is non-inclusive of end
output[i] = int(any((Data['Time'][j0 : j1] < th) & (Data['Flag1'][j0 : j1] > 0)))
Data['output'] = output
print(Data)
</code></pre>
<p>给出与原始示例相同的输出。您可以更改窗口的大小,修改<code>k</code></p>
<p>当然,如果要在后面检查任何一行,那么在我的示例中只需使用<code>j1 = n</code></p>