如何在熊猫中添加缺失的日期

时间:2020-07-02 10:16:17

标签: python pandas datetime

我有以下数据框:

data
Out[120]: 
             High    Low   Open  Close       Volume  Adj Close
Date                                                          
2018-01-02  12.66  12.50  12.52  12.66   20773300.0  10.842077
2018-01-03  12.80  12.67  12.68  12.76   29765600.0  10.927719
2018-01-04  13.04  12.77  12.78  12.98   37478200.0  11.116128
2018-01-05  13.22  13.04  13.06  13.20   46121900.0  11.304538
2018-01-08  13.22  13.11  13.21  13.15   33828300.0  11.261715
          ...    ...    ...    ...          ...        ...
2020-06-25   6.05   5.80   5.86   6.03   73612700.0   6.030000
2020-06-26   6.07   5.81   6.04   5.91  118435400.0   5.910000
2020-06-29   6.07   5.81   5.91   6.01   58208400.0   6.010000
2020-06-30   6.10   5.90   5.98   6.08   61909300.0   6.080000
2020-07-01   6.18   5.95   6.10   5.98   62333600.0   5.980000

[629 rows x 6 columns]

Dates列中缺少某些日期。我知道我可以这样做以获取所有日期:

pd.date_range(start, end, freq ='D')
Out[121]: 
DatetimeIndex(['2018-01-01', '2018-01-02', '2018-01-03', '2018-01-04',
               '2018-01-05', '2018-01-06', '2018-01-07', '2018-01-08',
               '2018-01-09', '2018-01-10',
               ...
               '2020-06-23', '2020-06-24', '2020-06-25', '2020-06-26',
               '2020-06-27', '2020-06-28', '2020-06-29', '2020-06-30',
               '2020-07-01', '2020-07-02'],
              dtype='datetime64[ns]', length=914, freq='D')

如何将所有日期与索引进行比较,然后仅添加缺少的日期即可。

1 个答案:

答案 0 :(得分:2)

使用DataFrame.reindex,在需要一些自定义开始时间和结束时间时也可以使用:

df = df.reindex(pd.date_range(start, end, freq ='D'))

或使用DataFrame.asfreq在现有数据之间添加缺少的日期时间:

df = df.asfreq('d')