擅长:python、mysql、java
<p>您可以首先通过<code>[::-1]</code>更改顺序,然后查找<a href="http://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.diff.html" rel="nofollow">^{<cd2>}</a>并计算<a href="http://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.cumsum.html" rel="nofollow">^{<cd3>}</a>(如果值是<code>True</code>):</p>
<pre><code>df = df[::-1]
print (df.datetime.diff().astype('timedelta64[s]'))
4 NaN
3 -1.0
2 -1.0
1 -1.0
0 -1.0
Name: datetime, dtype: float64
df['new'] = df.delivered.where(~df.delivered,df.datetime.diff().astype('timedelta64[s]'))
.cumsum().fillna(0).astype(int).mul(-1)
df = df[::-1]
print (df)
datetime delivered secondsuntilfailure new
0 2014-05-01 01:00:00 True 3 3
1 2014-05-01 01:00:01 True 2 2
2 2014-05-01 01:00:02 True 1 1
3 2014-05-01 01:00:03 False 0 0
4 2014-05-01 01:00:04 True ? 0
</code></pre>