我试图将雅虎财经的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)
日期在索引值中。
要将其放入列值,您应该只使用:
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)