2016-12-31 2 views
8

Выпуск:Изменить OHLC Resample код согласно устаревшему предупреждению

При работе с рыночными данными и передискретизаций внутридневных данных на дневной таймфрейм следующим образом:

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 

который, кажется, дает мне выход мне нужно (по-прежнему нужно проверить) ...

я получаю следующее предупреждение:

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

Вопрос:

Как бы это resample код репликации использовать новый синтаксис для согласования с текущей лучшей практикой с использованием apply?

То, что я пробовал:

Просто с использованием данных [ «Low»] в качестве примера:

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 

Не дает мне те же результаты, и я не уверен, куда вставлять apply ,

Вот кусочек data, чтобы проверить это с тем, если требуется:

благодаря

ответ

7

.resample() работает как groupby, так что вы можете передать этот словарь в 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

Nice @ayhan: -) Я получаю тот же результат, что и раньше, но предупреждение исчезло. – ade1e

Смежные вопросы