У меня есть фрейм данных с данными, основанными на времени, и мне нужно выполнить его повторную выборку по 12-часовым и дневным периодам. Пока что я использую следующий код:
if self.resample_by == 'day':
self.model_df = self.model_df.resample('D', on='index').mean()
self.model_df.dropna(axis=0, inplace=True)
elif self.resample_by == 'shift':
delta = dt.timedelta(hours=12)
self.model_df = self.model_df.resample(delta, on='24h_day_start').mean()
self.model_df.dropna(axis=0, inplace=True)
else:
pass
Прямо сейчас, как вы можете видеть, я использую mean()
для пересэмплированных данных в качестве временного промежутка, но в действительности разные строки имеют разные веса, поэтому мне нужно вместо этого выполнить вычисление средневзвешенного значения.
Как я понимаю, проблема в том, что мне нужно написать функцию для вычисления средневзвешенных значений, а затем использовать apply(func)
вместо mean()
. Правильно?
Однако я не понимаю, как структурировать мою функцию, потому что я запутался в том, что на самом деле возвращает DataFrame.resample
. В документации говорится, что функция возвращает объект ресамплера . Кто-нибудь знает, что это за объект и как я могу использовать вывод в функции взвешенного среднего?
Или, может быть, есть другой подход, который я мог бы использовать?