Допустим, это ваш полный набор данных:
Date Price Volume
2018-12-28 172.0 800
2018-12-27 173.6 400
2018-12-26 170.4 500
2018-12-25 171.0 2200
2018-12-21 172.8 800
И dates
были:
dates = pd.date_range('2018-12-15', '2018-12-31')
Сначала убедитесь, что столбец Дата на самом деле является типом даты:
df['Date'] = pd.to_datetime(df['Date'])
Затем установите Date в качестве индекса:
df = df.set_index('Date')
Затем переиндексируйте с помощью решения unutbu :
df = df.reindex(dates, fill_value=0.0)
Затем сбросьте индекс, чтобы сделать с ним стало проще работать:
df = df.reset_index()
Теперь это выглядит следующим образом:
index Price Volume
0 2018-12-15 0.0 0.0
1 2018-12-16 0.0 0.0
2 2018-12-17 0.0 0.0
3 2018-12-18 0.0 0.0
4 2018-12-19 0.0 0.0
5 2018-12-20 0.0 0.0
6 2018-12-21 172.8 800.0
7 2018-12-22 0.0 0.0
8 2018-12-23 0.0 0.0
9 2018-12-24 0.0 0.0
10 2018-12-25 171.0 2200.0
11 2018-12-26 170.4 500.0
12 2018-12-27 173.6 400.0
13 2018-12-28 172.0 800.0
14 2018-12-29 0.0 0.0
15 2018-12-30 0.0 0.0
16 2018-12-31 0.0 0.0
Do:
df['weekday'] = df['index'].dt.dayofweek
Наконец, сколько рабочих дней пропущено в вашем диапазон времени:
missing_weekdays = df[(~df['weekday'].isin([5,6])) & (df['Volume'] == 0.0)]
Результат:
>>> missing_weekdays
index Price Volume weekday
2 2018-12-17 0.0 0.0 0
3 2018-12-18 0.0 0.0 1
4 2018-12-19 0.0 0.0 2
5 2018-12-20 0.0 0.0 3
9 2018-12-24 0.0 0.0 0
16 2018-12-31 0.0 0.0 0