2013-08-13 6 views
1

Я хочу загрузить скорректированные цены закрытия и соответствующие им даты с yahoo, но я не могу понять, как получить даты от pandas DataFrame.Дата из Pandas DataFrame

Я читал ответ на this question

from pandas.io.data import DataReader 
from datetime import datetime 
goog = DataReader("GOOG", "yahoo", datetime(2000,1,1), datetime(2012,1,1)) 
print goog["Adj Close"] 

и эта часть работает отлично; однако мне нужно извлечь даты, соответствующие ценам.

Например:

adj_close = np.array(goog["Adj Close"]) 

дает мне 1-D массив скорректированных цен закрытия, Ищу 1-D массив дат, например, что:

date = # what do I do? 

adj_close[0] соответствует date[0]

Когда я делаю:

>>> goog.keys() 
Index([Open, High, Low, Close, Volume, Adj Close], dtype=object) 

Я вижу, что ни один из ключей не даст мне ничего похожего на дату, но я думаю, что должен быть способ создать массив дат. Что мне не хватает?

+3

В этом случае сроки являются вашими индексными метками. Вы можете получить доступ к ним с помощью 'goog.index'. Поскольку это данные временных рядов, данные хранятся как ['DatetimeIndex'] (http://pandas.pydata.org/pandas-docs/dev/timeseries.html). – TomAugspurger

ответ

2

Вы можете получить его по goog.index, который хранится как DateTimeIndex. Чтобы получить серию даты, вы можете сделать

goog.reset_index()['Date'] 
1
import numpy as np 
import pandas as pd 
from pandas.io.data import DataReader 

symbols_list = ['GOOG','IBM'] 
d = {} 
for ticker in symbols_list: 
    d[ticker] = DataReader(ticker, "yahoo", '2014-01-01') 
pan = pd.Panel(d) 
df_adj_close = pan.minor_xs('Adj Close') #also use 'Open','High','Low','Adj Close' and 'Volume' 

#the dates of the adjusted closes from the dataframe containing adjusted closes on multiple stocks 
df_adj_close.index 

# create a dataframe that has data on only one stock symbol 
df_individual = pan.get('GOOG') 

# the dates from the dataframe of just 'GOOG' data 
df_individual.index 
Смежные вопросы