Create a pandas dataframe with a date column:
import pandas as pd import datetime TODAY = datetime.date.today() ONE_WEEK = datetime.timedelta(days=7) ONE_DAY = datetime.timedelta(days=1) df = pd.DataFrame({'dt': [TODAY-ONE_WEEK, TODAY-3*ONE_DAY, TODAY], 'x': [42, 45,127]}) |
The dates have gaps:
dt x 0 2018-11-19 42 1 2018-11-23 45 2 2018-11-26 127 |
Now, fill in the missing dates:
r = pd.date_range(start=df.dt.min(), end=df.dt.max()) df.set_index('dt').reindex(r).fillna(0.0).rename_axis('dt').reset_index() |
Voila! The dataframe no longer has gaps:
dt x 0 2018-11-19 42.0 1 2018-11-20 NaN 2 2018-11-21 NaN 3 2018-11-22 NaN 4 2018-11-23 45.0 5 2018-11-24 NaN 6 2018-11-25 NaN 7 2018-11-26 127.0 |