擅长:python、mysql、java
<p>计算秒数:</p>
<pre><code>cumsecs = df.datetime.diff().astype('timedelta64[s]').cumsum().fillna(value=0.0)
</code></pre>
<p>每次交付失败时复制累积值,并填充任何之前的值:</p>
<pre><code>undeliv_secs = cumsecs.where(~df['delivered']).fillna(method='bfill')
</code></pre>
<p>直到失败的秒数只是两者之间的区别:</p>
<pre><code>df['secondsuntilfailure'] = undeliv_secs - cumsecs
print(df)
datetime delivered secondsuntilfailure
0 2014-05-01 01:00:00 True 3.0
1 2014-05-01 01:00:01 True 2.0
2 2014-05-01 01:00:02 True 1.0
3 2014-05-01 01:00:03 False 0.0
4 2014-05-01 01:00:04 True NaN
</code></pre>