Mam dość wyrafinowany kod przewidywania z ponad 20 kolumnami i milionami danych na kolumnę za pomocą wls. Teraz używam iterrow do zapętlenia dat, a następnie w oparciu o te daty i wartości w tych datach, wyodrębnij różne rozmiary danych do obliczeń. trwa godzin do pracy w mojej produkcji, ja uprościć kod do następujących:Jak wektorować Obliczenia Pandy oparte na ostatnich x wierszy danych
import pandas as pd
import numpy as np
from datetime import timedelta
df=pd.DataFrame(np.random.randn(1000,2), columns=list('AB'))
df['dte'] = pd.date_range('9/1/2014', periods=1000, freq='D')
def calculateC(A, dte):
if A>0: #based on values has different cutoff length for trend prediction
depth=10
else:
depth=20
lastyear=(dte-timedelta(days=365))
df2=df[df.dte<lastyear].head(depth) #use last year same date data for basis of prediction
return df2.B.mean() #uses WLS in my model but for simplification replace with mean
for index, row in df.iterrows():
if index>365:
df.loc[index,'C']=calculateC(row.A, row.dte)
czytałem że iterrow jest główną przyczyną, ponieważ nie jest skutecznym sposobem korzystania z Pandy i należy użyć metody wektorowej. Jednak nie mogę znaleźć sposobu na wektor w oparciu o warunki (daty, różne długości i zakres wartości). Czy istnieje sposób?
Wiem, że to stare pytanie, ale to, co warto "itertuples()" jest zauważalnie szybsze niż "iterrows()". – shadowtalker