Pandas .resample()或.asfreq()填充前进时间

时间:2018-03-20 14:41:45

标签: python pandas time-series resampling

我正在尝试使用从1小时增量到15分钟的时间序列重新采样数据帧。 .resample().asfreq()几乎完全符合我的要求,但我很难填补最后三个时间间隔。

我可以在最后添加一个额外的小时,重新采样,然后放弃最后一小时,但感觉很黑。

当前代码:

df = pd.DataFrame({'date':pd.date_range('2018-01-01 00:00', '2018-01-01 01:00', freq = '1H'), 'num':5})
df = df.set_index('date').asfreq('15T', method = 'ffill', how = 'end').reset_index()

当前输出:

                 date  num
0 2018-01-01 00:00:00    5
1 2018-01-01 00:15:00    5
2 2018-01-01 00:30:00    5
3 2018-01-01 00:45:00    5
4 2018-01-01 01:00:00    5

期望的输出:

                 date  num
0 2018-01-01 00:00:00    5
1 2018-01-01 00:15:00    5
2 2018-01-01 00:30:00    5
3 2018-01-01 00:45:00    5
4 2018-01-01 01:00:00    5
5 2018-01-01 01:15:00    5
6 2018-01-01 01:30:00    5
7 2018-01-01 01:45:00    5

思想?

1 个答案:

答案 0 :(得分:2)

不确定asfreqreindex效果非常好:

df.set_index('date').reindex(
      pd.date_range(
          df.date.min(), 
          df.date.max() + pd.Timedelta('1H'), freq='15T', closed='left'
      ), 
      method='ffill'
)

                     num
2018-01-01 00:00:00    5
2018-01-01 00:15:00    5
2018-01-01 00:30:00    5
2018-01-01 00:45:00    5
2018-01-01 01:00:00    5
2018-01-01 01:15:00    5
2018-01-01 01:30:00    5
2018-01-01 01:45:00    5