【问题标题】:pandas reindex fill in missing datespandas reindex 填补缺失的日期
【发布时间】:2018-11-24 01:12:22
【问题描述】:

我有一个带有日期索引的数据框。每个数据都是当月的第一天。我想每天填写索引中所有缺失的日期。

我认为这应该可行:

daily=pd.date_range('2016-01-01', '2018-01-01', freq='D')
df=df.reindex(daily)

但它在应该有数据的行中返回 NA(当月 1 日)有人能看到这个问题吗?

【问题讨论】:

    标签: pandas reindex


    【解决方案1】:

    使用reindex 和参数method='ffill'resampleffill 以获得更通用的解决方案,因为没有必要通过date_range 创建新索引:

    df = pd.DataFrame({'a': range(13)},
                       index=pd.date_range('2016-01-01', '2017-01-01', freq='MS'))
    
    print (df)
                 a
    2016-01-01   0
    2016-02-01   1
    2016-03-01   2
    2016-04-01   3
    2016-05-01   4
    2016-06-01   5
    2016-07-01   6
    2016-08-01   7
    2016-09-01   8
    2016-10-01   9
    2016-11-01  10
    2016-12-01  11
    2017-01-01  12
    
    daily=pd.date_range('2016-01-01', '2018-01-01', freq='D')
    df1 = df.reindex(daily, method='ffill')
    

    另一种解决方案:

    df1 = df.resample('D').ffill()  
    

    print (df1.head())
                a
    2016-01-01  0
    2016-01-02  0
    2016-01-03  0
    2016-01-04  0
    2016-01-05  0
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-23
      • 1970-01-01
      • 1970-01-01
      • 2022-08-15
      • 2017-12-12
      • 2021-06-17
      • 2021-09-03
      相关资源
      最近更新 更多