我在将函数应用于数据框时遇到问题,因为它返回错误:
----> 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']