擅长:python、mysql、java
<p>好的,我最终设置为使用以下方法,该方法相当快(无循环)</p>
<pre><code> super_pi = pd.period_range(start='2020-01-01 00:00', end='2020-06-01 00:00', freq='5h', name='p5h')
super_df = pd.DataFrame({'End' : 1, 'Start' : 0}, index=super_pi).resample('1h').first()
# We know last row is a 1 (end of period)
super_df['End'] = super_df['End'].shift(-1, fill_value=1)
super_df['Period'] = super_df[['End','Start']].sum(axis=1, min_count=1)
</code></pre>
<p>结果</p>
<pre><code> supder_df.head(10)
End Start Period
p5h
2020-01-01 00:00 NaN 0.0 0.0
2020-01-01 01:00 NaN NaN NaN
2020-01-01 02:00 NaN NaN NaN
2020-01-01 03:00 NaN NaN NaN
2020-01-01 04:00 1.0 NaN 1.0
2020-01-01 05:00 NaN 0.0 0.0
2020-01-01 06:00 NaN NaN NaN
2020-01-01 07:00 NaN NaN NaN
2020-01-01 08:00 NaN NaN NaN
</code></pre>
<p>最好的</p>