当与python一起使用时,如何处理google maps距离矩阵api的输出?

当与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

我需要帮助处理从google maps api返回的dict文件类型

目前,结果给了我一份无法处理的结果数据(起始地址、结束地址、旅行时间、距离等)。我可以简单地提取起始地址和结束地址,但事实证明批量数据很难提取,我认为这是因为它的结构

我拥有的代码示例如下:

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)