2016-12-31 12 views
8

Problem:Zmienić OHLC kod resample według nieaktualnych ostrzeżenia

Podczas pracy z danymi rynkowymi i resampling danych intra-day do codziennej czasowych w następujący sposób:

ohlc_dict = { 
'Open':'first', 
'High':'max', 
'Low':'min', 
'Last': 'last', 
'Volume': 'sum'} 

data.resample('1D',how=ohlc_dict).tail().dropna() 

       Open High Last Low  Volume 
    Timestamp     
    2016-12-27 163.55 164.18 164.11 163.55 144793.00 
    2016-12-28 164.18 164.33 164.22 163.89 215288.00 
    2016-12-29 164.44 164.65 164.49 164.27 245538.00 
    2016-12-30 164.55 164.56 164.18 164.09 286847.00 

co wydaje się daje mi wyjście muszę (nadal trzeba zweryfikować) ...

uzyskać następujące ostrzeżenie:

FutureWarning: how in .resample() is deprecated 
the new syntax is .resample(...)..apply(<func>) 

Pytanie:

Jak byłoby to kod resample być replikowane przy użyciu nowej składni, aby wyrównać z obecnym najlepszych praktyk z wykorzystaniem apply?

Co próbowałem:

Tuż przy użyciu danych [ „Low”] jako przykład:

def ohlc (df): 
    return df['Low'].min() 

data.resample('1D').dropna().apply(ohlc,axis=1).tail(2) 

Timestamp 
2016-12-29 164.45 
2016-12-30 164.26 
dtype: float64 

nie daje mi takie same wyniki, a ja nie wiem gdzie wstawić apply .

Oto wycinek z data przetestować to ze w razie potrzeby:

dzięki

Odpowiedz

7

.resample() działa jak groupby więc można przekazać ten słownik do resample().agg():

df.resample('1D').agg(ohlc_dict).tail().dropna() 
Out: 
       Volume Last High Open  Low 
Timestamp           
2016-12-27 144793.0 164.11 164.18 163.55 163.55 
2016-12-28 215288.0 164.22 164.33 164.18 163.89 
2016-12-29 245538.0 164.49 164.65 164.44 164.27 
2016-12-30 286847.0 164.18 164.56 164.55 164.09 
+0

Nicea @ayhan: -) Mam taki sam wynik jak poprzednio, ale ostrzeżenie zniknęło. – ade1e

Powiązane problemy