【问题标题】:Pandas .resample() or .asfreq() fill forward timesPandas .resample() 或 .asfreq() 填充转发时间
【发布时间】:2018-08-29 10:39:13
【问题描述】:

我正在尝试使用从 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

想法?

【问题讨论】:

    标签: python pandas time-series resampling


    【解决方案1】:

    不确定asfreq,但reindex 效果很好:

    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
    

    【讨论】:

    • 宾果游戏 - 感谢 Coldspeed。请继续关注,我为您准备了另一个。
    • @pshep123 没问题 :)
    猜你喜欢
    • 2019-02-21
    • 2015-04-14
    • 1970-01-01
    • 2022-11-14
    • 2020-11-21
    • 1970-01-01
    • 2021-08-16
    • 1970-01-01
    • 2016-03-13
    相关资源
    最近更新 更多