python - 如何解决错误:谷歌地图 API 结果的“值长度与索引长度不匹配”
问题描述
我正在使用 Google Maps API 收集距离数据,而且很可能并非所有位置都可以检索距离信息,所以我收到错误“ValueError:值的长度与索引的长度不匹配”。任何提示如何更新代码以修复它?
lat_origin = df["lat1"].tolist()
long_origin = df["lon1"].tolist()
lat_destination = df["lat2"].tolist()
long_destination = df["lon2"].tolist()
distance = []
for i in range(len(long_destination)):
url = f"https://maps.googleapis.com/maps/api/distancematrix/json?units=metric&origins={lat_origin[i]},{long_origin[i]}&destinations={lat_destination[i]}%2C{long_destination[i]}&key={google_key}&channel={channel_id}"
r=requests.get(url)
data = r.json()
try:
distance.append(data['rows'][0]['elements'][0]['distance']['value'])
except:
pass
distance
distance2 = []
for i in range(len(distance)):
distance2.append(distance[i])
df["Distance_in_Meters"] = distance2
解决方案
您可以执行类似的操作将 NA 值附加到您的列表中
import numpy as np
import pandas as pd
l = [1,2,3]
# Need to convert all the elements in list to float as NAN does not have
# equivalent Int value in Pandas.
l = list(map(lambda x: float(x), l))
right_padding = len(df) - len(l)
left_padding = 0
arr = np.pad(l, pad_width=(left_padding, right_padding), mode='constant',
constant_values=(np.nan,))
print(arr)
df['B'] = arr
推荐阅读
- python - QQmlApplicationEngine 加载组件失败,无法为模块加载插件“QtQuick, qtquick2plugin.dll: Thespecifiedmodulecould not be found
- amazon-web-services - aws elastcisearch 身份验证错误并显示 403
- sortablejs - 在 Vue.Draggable 和 Sortablejs 中设置 .sortable-drag 元素的样式
- go - 有没有办法使用反射来识别 Go 中的类型关系?
- c++ - 从 std::any 序列化的通用函数
- vue.js - Noob:在 vue 组件的插槽中修改(剥离)html
- docker - 是否可以加入具有不同操作系统的覆盖网络?
- azure-data-factory-2 - 数据工厂 Power Query DFExecutorUserError UnsafeProjection$
- frontend - 在cypress中找到一个找不到的元素点击
- sql - oracle 空间:ANYINTERACT 与 CONTAINS