我正在为一个项目处理相当大量的(赛马!)数据,为各种不同的数据组合计算滚动总和-因此我需要尽可能地简化它.
从本质上讲,我是:
- 计算点场随时间的滚动计算
- 为各种分组数据组合计算此值[在本例中为马和教练的组合]
- 查看过go 180天数据在一段时间内按组划分的平均值
下面的滚动窗口计算运行良好--但需要8.2秒[这大约是总数据集的1/8--因此需要1M 5秒].我正在寻找如何简化这种计算的 idea ,因为我希望对一些不同的数据组合进行计算,因此速度是至关重要的.谢谢.
import pandas as pd
import time
url = 'https://raw.githubusercontent.com/richsdixon/testdata/main/testdata.csv'
df = pd.read_csv(url, parse_dates=True)
df['RaceDate'] = pd.to_datetime(df['RaceDate'], format='mixed')
df.sort_values(by='RaceDate', inplace=True)
df['HorseRaceCount90d'] = (df.groupby(['Horse','Trainer'], group_keys=False)
.apply(lambda x: x.rolling(window='180D', on='RaceDate', min_periods=1)['Points'].mean()))