Используйте DataFrame.resample
по столбцу end_date
:
df1 = biden.resample('d', on='end_date').mean().reset_index()
Или решение из комментария с Grouper
:
df1 = biden.groupby(pd.Grouper(key='end_date', freq='d')).mean().reset_index()
print(df1)
end_date pct
0 2018-11-06 30.000
1 2018-11-07 NaN
2 2018-11-08 NaN
3 2018-11-09 26.000
4 2018-11-10 NaN
.. ... ...
435 2020-01-15 NaN
436 2020-01-16 23.775
437 2020-01-17 23.300
438 2020-01-18 NaN
439 2020-01-19 28.300
[440 rows x 2 columns]
Если хотите, пропустите пропущенные значения, агрегируйте с Series.dt.date
:
df2 = biden.groupby(biden['end_date'].dt.date).mean().reset_index()
print(df2)
end_date pct
0 2018-11-06 30.000000
1 2018-11-09 26.000000
2 2018-11-14 19.000000
3 2018-11-28 26.500000
4 2018-12-09 29.500000
.. ... ...
282 2020-01-12 27.977778
283 2020-01-14 28.000000
284 2020-01-16 23.775000
285 2020-01-17 23.300000
286 2020-01-19 28.300000
[287 rows x 2 columns]