У меня есть рабочая версия того, что мне нужно сделать, используя groupby и apply, однако это действительно медленно, и поэтому я надеюсь, что новый подход даст более быстрые результаты.
Вот подмножество код, который я использовал до сих пор:
url = 'https://horse-data-abcd.s3.amazonaws.com/horse_track_code.csv'
temp_df = pd.read_csv(url)
def run_aggs(row):
return row.shift().expanding() \
.agg({'win': 'mean' })
df_feature = temp_df.groupby(['horse_aap_id', 'track_code_3']).apply(run_aggs)
columns = {
'win': f'track_win_sr'
}
df_feature.rename(columns=columns, inplace=True)
temp_df = temp_df.join(df_feature)
Я хочу создать новый столбец track_win_sr
, который является pd.mean (win) всех предыдущих строк индекса.
track_win_sr
- среднее значение выигрышей всех предыдущих запусков лошадью на трассе, предшествующей ряду. sr
средняя скорость удара.
Выходные данные выглядят следующим образом.
Проблема в том, что когда он применяется к большому набору данных, он очень медленный, я ищу оптимизацию (возможно, матричный подход), чтобы действительно ускорить процесс.
Вот ссылка на полный файл , чтобы используйте в приведенном выше коде для проверки скорости.
Любой совет помощи очень признателен.
С уважением,
Люк