我应该如何阅读Python的这个链接?熊猫还是BS4?

时间:2017-09-23 22:50:12

标签: python html json pandas

我正在尝试阅读以下与熊猫的链接:

http://api.eia.gov/series/?api_key=3d82a096b5e846caa05ddc8e747a7fd&series_id=PET.WGIRIUS2.W

我已尝试使用pd.read_json(),它返回了错误ValueError: Mixing dicts with non-Series may lead to ambiguous ordering.

我尝试使用pd.read_csv返回没有任何行的DataFrame,并且所有列都在列表中。

这是我的代码的第一部分:

import pandas as pd

eia_key='<private>'

def link_category(id_number):
    return 'http://api.eia.gov/category/?api_key='+eia_key+'&category_id='+id_number

def link_series(id_number):
    return 'http://api.eia.gov/series/?api_key='+eia_key+'&series_id='+id_number


'''U.S. Gross Inputs into Refineries, Weekly'''

page=link_series('PET.WGIRIUS2.W')

然后我尝试:

df=pd.read_csv(page)

我把所有表值作为列名弄得一团糟......但是如果我尝试

df=pd.read_json(page)

我收到上面提到的错误......

有关使用Python阅读这些EIA数据集的最佳方法的任何建议吗?我愿意使用另一个库,比如BS4,如果那样会更好。

提前谢谢!!!!

1 个答案:

答案 0 :(得分:1)

我相信你只想让data字段退出回复。

import json, requests
d = json.loads(requests.get(page).text)
df = pd.DataFrame(d['series'][0]['data'])

df会为您提供您想要的数据。