Да, вы можете использовать pd.Grouper
API.Кроме того, это сохранит DataFrame, так что это беспроигрышный вариант.
means = df.groupby(pd.Grouper(freq='1D')).mean()
Или вы можете сгруппироваться по полу индекса даты и времени.
means = df.groupby(df.index.floor('D')).mean()
means.head(10)
A
2018-01-01 0.412354
2018-01-02 0.301209
2018-01-03 0.710357
2018-01-04 0.158135
2018-01-05 0.720308
2018-01-06 0.281862
2018-01-07 0.489486
2018-01-08 0.287808
2018-01-09 0.463117
2018-01-10 0.512963
Я предпочитаю подход № 1, поскольку pd.Grouper
должен быть более эффективным, чем группировка по несвязанному ряду / массиву (как во втором виде).