Я хочу добавить скользящий максимум, минимум и среднее к моему фрейму данных. Мой набор данных составляет около 2 миллионов строк, поэтому применение apply занимает много времени. Этот код позволит мне работать очень эффективно, однако моя проблема заключается в том, как согласовать их с исходным набором данных.
df - это объект groupby, а out - это фрейм данных. Я надеюсь, что смогу сделать что-то вроде этого: out = pd.concat([df, d1, d2, d3, d4], 1)
import pandas as pd
df = pd.DataFrame(np.random.randint(0,100,size=(1000, 3)),
columns=['Group','Time','Value'])
df.sort_values(by='Time', inplace=True)
suffix = 'my_suffix'
windows = [7, 14, 28]
df = df.groupby('Group')
d1 = pd.concat([df.rolling(w).mean()\
.rename(columns=lambda x: x + '_' + str(w) + 'D_mean_' + suffix)\
for w in windows] , 1)
d2 = pd.concat([df.rolling(w).std()\
.rename(columns=lambda x: x + '_' + str(w) + 'D_std_' + suffix) \
for w in windows] , 1)
d3 = pd.concat([df.rolling(w).min()\
.rename(columns=lambda x: x + '_' + str(w) + 'D_min_' + suffix) \
for w in windows] , 1)
d4 = pd.concat([df.rolling(w).max()\
.rename(columns=lambda x: x + '_' + str(w) + 'D_max_' + suffix) \
for w in windows] , 1)
out = pd.concat([d1, d2, d3, d4], 1)
Спасибо