我想使用pandas从yahoo finance获取一些ETF数据。
如果我进入雅虎财经网站,我可以找到单一的ETF(例如C001)。
但是,如果我尝试使用python pandas来获取数据,我什么也得不到。
df = pd.io.data.DataReader('C001','yahoo',start=datetime(2010,1,1), end=date.today())
如果我使用'AAP'代替'C001',代码可以正常工作。
有什么明显我做错了吗?有没有理由说“雅虎”有效,但ETF代码符号却没有?
提前多多感谢。
答案 0 :(得分:1)
我注意到在雅虎财经上有几个C001代码(C001.f,c001.de等)。
我使用了一些代码(也包括自动收报机代码)和C001F(或其他所有代码),它运行良好。
import datetime
import pandas as pd
from pandas import DataFrame
from pandas.io.data import DataReader
symbols_list = ['C001.F']
symbols=[]
for ticker in symbols_list:
r = DataReader(ticker, "yahoo",
start=datetime.datetime(20140, 01, 01))
# add a symbol column
r['Symbol'] = ticker
symbols.append(r)
# concatenate all the dfs
df = pd.concat(symbols)
print (df)
结果如下:
Open High Low Close Volume Adj Close Symbol
Date
2010-01-12 60.40 60.40 59.10 59.13 5100 59.13 C001.F
2010-01-13 59.30 59.81 59.30 59.81 3300 59.81 C001.F
2010-01-14 59.93 59.93 59.58 59.90 400 59.90 C001.F
2010-01-15 59.81 60.04 58.46 58.54 3400 58.54 C001.F
2010-01-18 58.93 59.09 58.91 59.09 4100 59.09 C001.F
2010-01-19 58.70 59.52 58.48 59.52 16700 59.52 C001.F
2010-01-20 59.39 59.52 58.42 58.46 89300 58.46 C001.F
2010-01-21 58.71 58.83 56.94 57.08 11800 57.08 C001.F
2010-01-22 57.19 57.19 56.17 56.17 14200 56.17 C001.F
2010-01-25 56.32 56.83 56.16 56.21 45700 56.21 C001.F
2010-01-26 55.72 56.60 55.71 56.60 4200 56.60 C001.F
2010-01-27 56.06 56.53 55.92 56.22 300 56.22 C001.F
那是你想要完成的吗? (如果您不想使用符号代码,请不要在#add符号后使用这些行...)并更改print r中的print df。 我使用符号自动收报机'因为我需要在检索多个代码时看到符号