python pandas 雅虎数据 ETF

python pandas yahoo data ETF

我想使用 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',代码可以正常工作。

有什么明显的我做错了吗?为什么 'yahoo' 有效但 ETF 股票代码不起作用?

非常感谢。

我注意到在雅虎财经上有几个 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 a symbol 之后的行...)并更改 print r 中的 print df。 我使用符号代码,因为我需要在检索多个代码时查看代码