python - JSON到 Pandas 数据框

我想要做的是沿着由纬度和经度坐标指定的路径从谷歌地图 API 中提取高程数据,如下所示:

from urllib2 import Request, urlopen
import json

path1 = '42.974049,-81.205203|42.974298,-81.195755'
request=Request('http://maps.googleapis.com/maps/api/elevation/json?locations='+path1+'&sensor=false')
response = urlopen(request)
elevations = response.read()

这给了我一个看起来像这样的数据:

elevations.splitlines()

['{',
 '   "results" : [',
 '      {',
 '         "elevation" : 243.3462677001953,',
 '         "location" : {',
 '            "lat" : 42.974049,',
 '            "lng" : -81.205203',
 '         },',
 '         "resolution" : 19.08790397644043',
 '      },',
 '      {',
 '         "elevation" : 244.1318664550781,',
 '         "location" : {',
 '            "lat" : 42.974298,',
 '            "lng" : -81.19575500000001',
 '         },',
 '         "resolution" : 19.08790397644043',
 '      }',
 '   ],',
 '   "status" : "OK"',
 '}']

当作为 DataFrame 放入时,我得到的是:

pd.read_json(elevations)

这就是我想要的:

我不确定这是否可能,但主要是我正在寻找一种能够将海拔、纬度和经度数据放在 Pandas 数据框中的方法(不必有花哨的多行标题)。

如果有人可以就如何处理这些数据提供帮助或提供一些建议,那就太好了!如果你不能说我之前没有太多处理过 json 数据......

编辑:

这种方法不是很吸引人,但似乎很有效:

data = json.loads(elevations)
lat,lng,el = [],[],[]
for result in data['results']:
    lat.append(result[u'location'][u'lat'])
    lng.append(result[u'location'][u'lng'])
    el.append(result[u'elevation'])
df = pd.DataFrame([lat,lng,el]).T

最终数据框包含纬度、经度、海拔列

最佳答案

我使用 pandas 1.01 中包含的 json_normalize() 找到了一个快速简便的解决方案。

from urllib2 import Request, urlopen
import json

import pandas as pd    

path1 = '42.974049,-81.205203|42.974298,-81.195755'
request=Request('http://maps.googleapis.com/maps/api/elevation/json?locations='+path1+'&sensor=false')
response = urlopen(request)
elevations = response.read()
data = json.loads(elevations)
df = pd.json_normalize(data['results'])

这提供了一个漂亮的扁平数据框,其中包含我从 Google Maps API 获得的 json 数据。

https://stackoverflow.com/questions/21104592/

相关文章:

json - pinterest api 文档

.net - 确保 .NET 中的 json 键是小写的

javascript - 如何通过 JavaScript for 循环创建 json?

json - 如何使用 jq 合并来自 2 个文件的 2 个 JSON 对象?

python - 如何以 JSON 格式发送 POST 请求?

json - 在 JSON 结果中定义函数是否有效?

json - tsconfig.json : Build:No inputs were found

javascript - 什么是领先的 LINQ for JavaScript 库?

json - 无法在 jQuery.ajax 中将内容类型设置为 'application/json

json - PostgreSQL 返回结果集为 JSON 数组?