Skip to content

Instantly share code, notes, and snippets.

@umarhussain88
Last active February 5, 2021 11:12
Show Gist options
  • Save umarhussain88/4eb273e875189c613212e4ba8a94ee96 to your computer and use it in GitHub Desktop.
Save umarhussain88/4eb273e875189c613212e4ba8a94ee96 to your computer and use it in GitHub Desktop.
fill missing datetimes.
import pandas as pd
rows = [{'dt' : '2020-01-01 12:00:00'},
{'dt' : '2020-01-04 13:00:00'},
{'dt' : '2020-01-08 14:00:00'},
{'dt' : '2020-01-09 15:00:00'}]
dt = pd.DataFrame(rows)
dt['dt'] = pd.to_datetime(dt['dt'],format='%Y-%m-%d')
df = pd.DataFrame({'date' : pd.date_range(dt['dt'].min(), dt['dt'].max(),freq='D')})
df1 = pd.merge(
dt.assign(date=dt['dt'].dt.normalize()),
df.assign(date=df['date'].dt.normalize()),
on=['date'],
how='right'
).sort_values('date')
df1['date'] = pd.to_datetime(
df1["date"].dt.date.astype(str) + " " + df1["dt"].ffill().dt.time.astype(str)
)
print(df1)
"""
dt date
0 2020-01-01 12:00:00 2020-01-01 12:00:00
4 NaT 2020-01-02 12:00:00
5 NaT 2020-01-03 12:00:00
1 2020-01-04 13:00:00 2020-01-04 13:00:00
6 NaT 2020-01-05 13:00:00
7 NaT 2020-01-06 13:00:00
8 NaT 2020-01-07 13:00:00
2 2020-01-08 14:00:00 2020-01-08 14:00:00
3 2020-01-09 15:00:00 2020-01-09 15:00:00
"""
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment