代码在函数外部工作,但不在函数内部

时间:2020-05-24 01:02:08

标签: python python-3.x function

我在将函数应用于数据框时遇到问题,因为它返回错误:

----> 8     return data['rows'][0]['elements'][0]['duration']['value']
KeyError: 'duration'

我具有以下功能:

def calc_dist(row):
    lat = centroid['Latitude'][row]
    lng = centroid['Longitude'][row]
    base_url = "https://maps.googleapis.com/maps/api/distancematrix/json?units=imperial&origins=place_id:{}&destinations={},{}&key=xxxxxx"
    url = base_url.format(datas.place_id, lat, lng)
    r = requests.get(url)
    data = r.json()
    return data['rows'][0]['elements'][0]['duration']['value']

当我自己在函数内部运行代码时,它运行良好,并且返回了如下所示的api调用

{'destination_addresses': ['50 W 20th St, New York, NY 10011, USA'],
 'origin_addresses': ['LaGuardia Airport (LGA), Queens, NY 11371, USA'],
 'rows': [{'elements': [{'distance': {'text': '9.4 mi', 'value': 15134},
 'duration': {'text': '28 mins', 'value': 1653},
 'status': 'OK'}]}],
 'status': 'OK'}

如果有什么用,这是我的申请

centroid['distance'] = centroid.apply(calc_dist, axis=1)

中心是一个包含两列经度和纬度的数据框

编辑: 我修好了,我更改了完成申请的行

centroid['distance'] = centroid.apply(lambda row: calc_dist(row['Latitude'],row['Longitude']), axis=1)

然后我将功能更改为

def calc_dist(lat,lng):
    base_url = "https://maps.googleapis.com/maps/api/distancematrix/json?units=imperial&origins=place_id:{}&destinations={},{}&key=xxxxxx"
    url = base_url.format(datas.place_id, lat, lng)
    r = requests.get(url)
    data = r.json()
    return data['rows'][0]['elements'][0]['duration']['value']

0 个答案:

没有答案