Lea*_*ava 7 python api python-2.7 pandas
我想将API调用转换为pandas data frame.
目前,API非常无组织,我想整合pandas以便于阅读/编辑/操作.
我尝试过以下方法:
r = requests.get('http://api.football-data.org/v1/competitions/398/teams')
x = r.json()
df = pd.read_json(x)
print df
Run Code Online (Sandbox Code Playgroud)
但收到:
TypeError: Expected String or Unicode
Run Code Online (Sandbox Code Playgroud)
pd.read_json期待一个字符串.但是,r.json()返回一个dict对象.
在您的情况下,您应该通过查看来探索返回的JSON对象的结构x.keys().这会产生['count', '_links', 'teams'].您可能对"球队"领域感兴趣.
因此,您应该执行以下操作:
r = requests.get('http://api.football-data.org/v1/competitions/398/teams')
x = r.json()
df = pd.DataFrame(x['teams'])
print df
Run Code Online (Sandbox Code Playgroud)
read_json函数需要一个字符串。您正在提供一个 JSON 对象(使用requests库的json方法解析)。您需要做的是使用方法将对象转换回字符串json.dumps:
import json
r = requests.get('http://api.football-data.org/v1/competitions/398/teams')
x = r.json()
df = pd.read_json(json.dumps(x))
Run Code Online (Sandbox Code Playgroud)
或者更好的是,直接从请求对象获取缓冲区,而不将其转换为对象。
r = requests.get('http://api.football-data.org/v1/competitions/398/teams')
df = pd.read_json(r.text)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11958 次 |
| 最近记录: |