我具有以下格式的API输出。
reponse.text
'{"position": {"lat": 1.352083, "lon": 103.819836}, "mapView": {"N": 1.4784001, "E": 104.0945001, "S": 1.1496, "W": 103.594}}\n'
我想将此输出转换为pandas数据框。
我的代码
import json
d = json.loads(response.text)
df = pd.DataFrame(d)
当前输出
position mapView
E NaN 104.0945
N NaN 1.4784
S NaN 1.1496
W NaN 103.5940
lat 1.352083 NaN
lon 103.819836 NaN
我的预期输出
lat lon
1.352083 103.819836
如何在python中实现?
答案 0 :(得分:2)
您非常亲密。从熊猫中导入json_normalize
,然后您可以简单地使用
from pandas.io.json import json_normalize
jsonData = json.loads(response.text)
df = json_normalize(jsonData)
print(df)
position.lat position.lon mapView.N mapView.E mapView.S mapView.W
1.352083 103.819836 1.4784 104.0945 1.1496 103.594
然后只需删除多余的列并正确重命名即可。
答案 1 :(得分:0)
答案 2 :(得分:0)
您只想使用位置键,而将json解析器创建的整个字典作为参数传递。
请检查DataFrame构造函数文档页面here中的其他参数。
>>> import pandas as pd
>>> import json
>>> api_resp = json.loads('{"position": {"lat": 1.352083, "lon": 103.819836}, "mapView": {"N": 1.4784001, "E": 104.0945001, "S": 1.1496, "W": 103.594}}\n')
>>> api_resp
{'position': {'lat': 1.352083, 'lon': 103.819836}, 'mapView': {'N': 1.4784001, 'E': 104.0945001, 'S': 1.1496, 'W': 103.594}}
>>> df = pd.DataFrame(data=api_resp['position'], index=[0])
>>> df
lat lon
0 1.352083 103.819836