【问题标题】:How to fill in missing 5 minute intervals in pandas dataframe如何在熊猫数据框中填写缺失的 5 分钟间隔
【发布时间】:2020-06-16 18:34:00
【问题描述】:

我有一个数据框每 5 分钟保存一次交易数据,例如

                    open  close
datetime                     
2015-02-02 08:00:00  43.5 NaN

2015-02-02 08:10:00  43.3   0
2015-02-02 08:15:00  43.2   7
2015-02-02 08:20:00   NaN NaN
2015-02-02 08:25:00  43.1   9

2015-02-02 08:35:00  43.0   9
2015-02-02 08:40:00  43.0  11
2015-02-02 08:45:00   NaN NaN
2015-02-02 08:50:00   NaN NaN
2015-02-02 08:55:00   NaN NaN
2015-02-02 09:00:00  43.1   9

我希望像 08:30:00 时间戳一样填充缺失的行,只需 np.nan 然后向前填充。我已经研究过使用pd.date_range 函数来计算从开始到结束日期每五分钟间隔的索引,并且只是天真地将其指定为我的数据框的索引,但正如我所想的那样,这会引发错误。

我还查看了this 问题,这与我要问的问题非常相似,但答案使用了resample。我不知道这如何解决了 OP 的问题,因为据我所知,您不能将重采样对象视为数据框并以相同的方式对其进行查询。

编辑: 我最终找到了一种方法来完成这项工作。我使用date_range 使用我想要的整个日期范围创建了一个包含相同列的数据框,然后使用update 使用我从交易数据中实际获得的值更新此数据框

【问题讨论】:

    标签: python pandas datetime


    【解决方案1】:

    要从重采样对象中获取一些东西,您需要添加一个调度方法(参见the docs),例如:

    import numpy as np
    import pandas as pd
    
    df = pd.DataFrame({'open': [43.5,43.3,43.2,np.NaN,43.1,43.0,43.0,np.NaN,np.NaN,np.NaN,43.1],
                       'close': [np.NaN,0,7,np.NaN,9,9,11,np.NaN,np.NaN,np.NaN,9]},
                       index = pd.to_datetime(['2015-02-02 08:00:00','2015-02-02 08:10:00','2015-02-02 08:15:00',
                                               '2015-02-02 08:20:00','2015-02-02 08:25:00','2015-02-02 08:35:00',
                                               '2015-02-02 08:40:00','2015-02-02 08:45:00','2015-02-02 08:50:00',
                                               '2015-02-02 08:55:00','2015-02-02 09:00:00']))
    
    df1 = df.resample('5min').mean()
    # df1
    #                      open  close
    # 2015-02-02 08:00:00  43.5    NaN
    # 2015-02-02 08:05:00   NaN    NaN
    # 2015-02-02 08:10:00  43.3    0.0
    # 2015-02-02 08:15:00  43.2    7.0
    # 2015-02-02 08:20:00   NaN    NaN
    # 2015-02-02 08:25:00  43.1    9.0
    # 2015-02-02 08:30:00   NaN    NaN
    # 2015-02-02 08:35:00  43.0    9.0
    # 2015-02-02 08:40:00  43.0   11.0
    # 2015-02-02 08:45:00   NaN    NaN
    # 2015-02-02 08:50:00   NaN    NaN
    # 2015-02-02 08:55:00   NaN    NaN
    # 2015-02-02 09:00:00  43.1    9.0
    

    【讨论】:

      猜你喜欢
      • 2019-08-01
      • 2019-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-06
      • 2020-09-13
      相关资源
      最近更新 更多