2017-01-08 4 views
2

Я использую pandas datareader для получения данных о запасах.Настройка частоты pandas DatetimeIndex после создания DataFrame

import pandas as pd 
import pandas_datareader.data as web 
ABB = web.DataReader(name='ABB.ST', 
        data_source='yahoo', 
        start='2000-1-1') 

Однако по умолчанию freq не задан на результирующем кадре данных. мне нужно, чтобы частота иметь возможность перемещаться по индексу, как это:

for index, row in ABB.iterrows(): 
    ABB.loc[[index + 1]] 

Если частота не установлена ​​на DatetimeIndex им не в состоянии использовать +1 и т.д. для навигации.

Я нашел две функции: astype и resample. Поскольку я уже знаю, что частота resample выглядит как overkill, я просто хочу установить частоту на каждый день.

Теперь мой вопрос заключается в том, как я могу использовать astype для ABB для установки частоты в каждый день?

+1

'ABB = ABB.asfreq ('d')' должен менять частоту до ежедневного с помощью «NaN» в течение нескольких дней без данных. Кроме того, измените 'ABB.loc [[index + 1]]' на 'ABB.loc [[index + pd.Timedelta (days = 1)]]' внутри 'for-loop'. – Abdou

+0

Вы должны поставить это как ответ – user3139545

ответ

3

Try:

ABB = ABB.asfreq('d') 

Это должно менять частоту в день с NaN в течение нескольких дней без данных.

Кроме того, вы должны переписать for-loop следующим образом:

for index, row in ABB.iterrows(): 
    print(ABB.loc[[index + pd.Timedelta(days = 1)]]) 

Спасибо!

0

Если частота изменения потребности индекса resample для вас, но тогда нужен агрегатные столбцов по некоторым функциям, как mean или sum:

print (ABB.resample('d').mean()) 
print (ABB.resample('d').sum()) 

При необходимости выбрать другую строку использовать iloc с get_loc для определения позиции значения в DatetimeIndex:

print (ABB.iloc[ABB.index.get_loc('2001-05-09') + 1]) 
Open   188.00 
High   192.00 
Low    187.00 
Close   191.00 
Volume  764200.00 
Adj Close  184.31 
Name: 2001-05-10 00:00:00, dtype: float64 
Смежные вопросы