У меня есть пандас DataFrame с индексом pd.TimeDeltas
, некоторые из которых являются долями дней.Я хотел бы использовать df.groupby
для группировки строк по целым дням (игнорируя доли дней), чтобы я мог вычислить среднее значение.
Вот пример того, что я хотел бы сделать:
import pandas as pd
import numpy as np
data = [[1,2,3], [2,3,4], [3,4,5], [1,2,3], [2,3,4], [3,4,5]]
idx = [pd.Timedelta('1.2 days'), pd.Timedelta('1.2 days'), pd.Timedelta('3.8 days'), pd.Timedelta('3.8 days'), pd.Timedelta('4.2 days'), pd.Timedelta('4.2 days')]
df = pd.DataFrame(data, columns=['a', 'b', 'c'])
df.index = idx
df
Out:
a b c
1 days 04:48:00 1 2 3
1 days 04:48:00 2 3 4
3 days 19:12:00 3 4 5
3 days 19:12:00 1 2 3
4 days 04:48:00 2 3 4
4 days 04:48:00 3 4 5
Строка ниже дает желаемый результат, однако создает дополнительные строки для каждого дня, поэтому есть строки, заполненные NaN, которые я впоследствии удаляю с помощью df.dropna()
.Есть ли лучший подход к этому?
df.groupby(pd.Grouper(freq='D')).aggregate(np.mean).dropna()