Slartibartfast
Slartibartfast

Reputation: 1190

How to add missing dates in pandas

I have the following dataframe:

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]

Some of the dates are missing in Dates Column. I know i can do this to get all the 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')

How can i compare all the dates with the index and just add the dates which are missing.

Upvotes: 1

Views: 2705

Answers (1)

jezrael
jezrael

Reputation: 862471

Use DataFrame.reindex, working also if need some custom start and end datimes:

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

Or DataFrame.asfreq for add missing datetimes between existing data:

df = df.asfreq('d')

Upvotes: 4

Related Questions