如何在python中使用pandas从具有两个数据帧的网页中选择第二个数据帧?

时间:2017-03-02 04:07:41

标签: python pandas urllib2

我试图只在这个网址上使用第二个数据框,但我无法弄清楚如何指定只获取一个数据帧。它打印出图表和表格的数据框,但我想要打印出来的只是表格。

`import pandas as pd  
 import urllib.request

page = pd.read_html('https://www.google.com/finance/historical?q=a&startdate=Jan%201%2C%202000&enddate=Feb%2028%2C%202017&num=200&ei=_nm3WKGHCIf7jAG74ar4Cw&start=200', header=0)

for df in page:
    print(df)`

2 个答案:

答案 0 :(得分:4)

您要查找的表具有类属性gf-table,将其传递给pd.read_html,然后它只会读取第二个表:

page = pd.read_html('https://www.google.com/finance/historical?q=a&startdate=Jan%201%2C%202000&enddate=Feb%2028%2C%202017&num=200&ei=_nm3WKGHCIf7jAG74ar4Cw&start=200', 
                    attrs = {'class': 'gf-table'},
                    header=0)
​
page

#             Date   Open   High    Low  Close   Volume
#0    May 12, 2016  42.59  42.94  42.42  42.73  2224506
#1    May 11, 2016  42.19  43.20  42.12  42.46  3325515
#2    May 10, 2016  41.50  42.00  41.35  42.00  2094305
#3     May 9, 2016  41.51  41.78  41.29  41.33  1741539
#4     May 6, 2016  40.86  41.62  40.72  41.43  1403476
#5     May 5, 2016  40.64  41.03  40.51  40.96  1083956
#...

答案 1 :(得分:0)

使用数据阅读器将是更好的方式来使用谷歌的雅虎财务数据。那说@Psidom提供了正确的答案。

以下是如何使用数据读取器直接将Agilent库存数据作为DataFrame而非数据框列表的示例。

import pandas as pd
import pandas_datareader.data as web
import datetime

start = datetime.datetime(2000, 1, 1)
end = datetime.datetime(2017, 2, 27)

data = web.DataReader('A', 'google', start, end)

data.head()

这将直接返回Pandas数据帧,允许您直接执行类似的操作。

data.ix['2010-01-04']

从spefic数据中获取数据,例如