python pandas yahoo data ETF

时间:2015-01-30 14:42:26

标签: python pandas yahoo-finance

我想使用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代码符号却没有?

提前多多感谢。

1 个答案:

答案 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。 我使用符号自动收报机'因为我需要在检索多个代码时看到符号