当与python一起使用时,如何处理google maps距离矩阵api的输出?
我需要帮助处理从google maps api返回的dict文件类型 目前,结果给了我一份无法处理的结果数据(起始地址、结束地址、旅行时间、距离等)。我可以简单地提取起始地址和结束地址,但事实证明批量数据很难提取,我认为这是因为它的结构 我拥有的代码示例如下:当与python一起使用时,如何处理google maps距离矩阵api的输出?,python,python-3.x,google-maps,dictionary,google-distancematrix-api,Python,Python 3.x,Google Maps,Dictionary,Google Distancematrix Api,我需要帮助处理从google maps api返回的dict文件类型 目前,结果给了我一份无法处理的结果数据(起始地址、结束地址、旅行时间、距离等)。我可以简单地提取起始地址和结束地址,但事实证明批量数据很难提取,我认为这是因为它的结构 我拥有的代码示例如下: import googlemaps import csv import pandas as pd postcodes = pd.read_csv("SW.csv", sep=',', usecols=['postcode'], squee
import googlemaps
import csv
import pandas as pd
postcodes = pd.read_csv("SW.csv", sep=',', usecols=['postcode'], squeeze=True)
infile1 = open('SW.csv', 'r')
reader1 = csv.reader(infile1)
Location1 = postcodes[0:10]
Location2 = 'SW1A 2HQ'
my_distance = gmaps.distance_matrix(Location1, Location2, mode='bicycling', language=None, avoid=None, units='metric',
departure_time='2475925955', arrival_time=None,
transit_routing_preference=None)
print(my_distance)
生成以下输出
{‘来源地址’:[‘Cossar Mews,Brixton,London SW2 2TR,UK’,
“英国伦敦西南部布什内尔路17号8QP”伦敦西南部富勒姆Maltings Pl
英国伦敦骑士桥SW7 1BJ切尔西SW3
3EE,英国','伦敦海丝特路SW11 4AJ,英国','伦敦布里克斯顿SW2 1HZ,
英国,“兰德尔Cl,伦敦SW11 3TG,英国”,“斯隆街,伦敦SW1X 9SF,
英国','英国伦敦SW4 6TA宾菲尔德路','行':[{'elements':
[{'duration':{'text':'28分钟','value':1657},'status':'OK',
距离:{'text':'7.5km','value':7507}}]},{'elements':
[{'duration':{'text':'31分钟','value':1850},'status':'OK',
距离:{'text':'9.2km','value':9176}]},{'elements':
[{'duration':{'text':'27分钟','value':1620},'status':'OK',
距离:{'text':'7.0公里,'value':7038}}]},{'elements':
[{'duration':{'text':'16分钟','value':953},'status':'OK',
距离:{'text':'4.0公里,'value':4038}}]},{'elements':
[{'duration':{'text':'15分钟','value':899},'status':'OK',
距离:{'text':'3.4km','value':3366}}]},{'elements':
[{'duration':{'text':'21分钟','value':1260},'status':'OK',
距离:{'text':'5.3km','value':5265}}]},{'elements':
[{'duration':{'text':'28分钟','value':1682},'status':'OK',
距离:{'text':'7.5km','value':7502}}]},{'elements':
[{'duration':{'text':'23分钟','value':1368},'status':'OK',
距离:{'text':'5.9公里,'value':5876}]},{'elements':
[{'duration':{'text':'14分钟','value':839},'status':'OK',
距离:{'text':'3.3km','value':3341}}]},{'elements':
[{'duration':{'text':'16分钟','value':982},'status':'OK',
‘距离’:{‘文本’:‘4.3公里’,‘值’:4294}]},
‘目的地地址’:[‘英国伦敦SW1A 2HQ马卫路’,
“状态”:“确定”}
然后我使用下面的代码来提取它
origin = my_distance['origin_addresses']
dest = my_distance['destination_addresses']
dist = my_distance['rows']
我尝试了df_from_list和许多其他方法来尝试和处理dist数据。最终目标是创建一个矩阵,每行上都有源地址,目标地址形成列,距离和时间作为这些列中的数据变量
类似的东西
| DEST 1 | DEST 2 |
| TIME | DIST | TIME | DIST |
START 1 | X | Y | Z | T |
START 2 | A | B | C | T |
请有人帮助我将my_distance输出(如上图所示)处理成与上图所示类似的体系结构
谢谢 这基本上创建了一个包含起始地址和目标地址的字典。 目标地址有一个元组列表作为值。元组中的第一个元素是持续时间,第二个元素是距离 e、 g.
(45,7.0)#45=45分钟和7.0=7公里
。然后我用
在运行gmaps.distance_matrix之前,我创建了一个空数据框,并将字典键放入数据框中。与上述解决方案类似:
traffic = pd.DataFrame({'time': [], 'origins': [], 'destinations': [], 'destination_addresses': [], 'origin_addresses': [], 'rows': [], 'status': []})
for origin in origins:
for destination in destinations:
traffic = traffic.append({'time': [00:00], 'origins': [origin], 'destinations': [destination]}, ignore_index=True)
if origin != destination:
if cityname == cityname:
# Get travel distance and time for a matrix of origins and destinations
traffic_result = gmaps.distance_matrix((origin), (destination),
mode="driving", language=None, avoid=None, units="metric",
departure_time=00:00, arrival_time=None, transit_mode=None,
transit_routing_preference=None, traffic_model=None, region=None)
for key in traffic_result.keys():
for value in traffic_result[key]:
print(key, value)
traffic = traffic.append({key: [value]}, ignore_index=True)
traffic = pd.DataFrame({'time': [], 'origins': [], 'destinations': [], 'destination_addresses': [], 'origin_addresses': [], 'rows': [], 'status': []})
for origin in origins:
for destination in destinations:
traffic = traffic.append({'time': [00:00], 'origins': [origin], 'destinations': [destination]}, ignore_index=True)
if origin != destination:
if cityname == cityname:
# Get travel distance and time for a matrix of origins and destinations
traffic_result = gmaps.distance_matrix((origin), (destination),
mode="driving", language=None, avoid=None, units="metric",
departure_time=00:00, arrival_time=None, transit_mode=None,
transit_routing_preference=None, traffic_model=None, region=None)
for key in traffic_result.keys():
for value in traffic_result[key]:
print(key, value)
traffic = traffic.append({key: [value]}, ignore_index=True)