熊猫雅虎财务DataReader

nic*_*pel 13 python pandas

我试图将雅虎财经的Adj Close价格变成DataFrame.我有我想要的所有股票,但我无法按日期排序.

stocks = ['ORCL', 'TSLA', 'IBM','YELP', 'MSFT']
ls_key = 'Adj Close'
start = datetime(2014,1,1)
end = datetime(2014,3,28)    
f = web.DataReader(stocks, 'yahoo',start,end)


cleanData = f.ix[ls_key]
dataFrame = pd.DataFrame(cleanData)

print dataFrame[:5]
Run Code Online (Sandbox Code Playgroud)

我得到以下结果,这几乎是完美的.

              IBM   MSFT   ORCL    TSLA   YELP
Date                                           
2014-01-02  184.52  36.88  37.61  150.10  67.92
2014-01-03  185.62  36.64  37.51  149.56  67.66
2014-01-06  184.99  35.86  37.36  147.00  71.72
2014-01-07  188.68  36.14  37.74  149.36  72.66
2014-01-08  186.95  35.49  37.61  151.28  78.42
Run Code Online (Sandbox Code Playgroud)

但是,日期不是项目.所以当我跑:

print dataFrame['Date']
Run Code Online (Sandbox Code Playgroud)

我收到错误:

KeyError: u'no item named Date'
Run Code Online (Sandbox Code Playgroud)

希望任何人都可以帮我添加日期.

小智 7

import pandas_datareader.data as web
import datetime    

start = datetime.datetime(2013, 1, 1)
end = datetime.datetime(2016, 1, 27)
df = web.DataReader("GOOGL", 'yahoo', start, end)

dates =[]
for x in range(len(df)):
    newdate = str(df.index[x])
    newdate = newdate[0:10]
    dates.append(newdate)

df['dates'] = dates

print df.head()
print df.tail()
Run Code Online (Sandbox Code Playgroud)


J-E*_*nks 6

日期在索引值中。

要将其放入列值,您应该只使用:

dataframe.reset_index(inplace=True,drop=False)
Run Code Online (Sandbox Code Playgroud)

然后你可以使用

dataframe['Date'] 
Run Code Online (Sandbox Code Playgroud)

因为“日期”现在将成为数据框列中的键之一。


小智 3

用于dataFrame.index直接访问日期或添加显式列,请使用dataFrame["Date"] = dataframe.index

stocks = ['ORCL', 'TSLA', 'IBM','YELP', 'MSFT']
ls_key = 'Adj Close'
start = datetime(2014,1,1)
end = datetime(2014,3,28)    
f = web.DataReader(stocks, 'yahoo',start,end)


cleanData = f.ix[ls_key]
dataFrame = pd.DataFrame(cleanData)
dataFrame["Date"] = dataframe.index
print dataFrame["Date"] ## or print dataFrame.index
Run Code Online (Sandbox Code Playgroud)