使用python-radar触发ValueError解包错误,求解决方案
问题排查与修复
报错原因
报错ValueError: too many values to unpack (expected 2)的核心问题:
radar.route.distance要求起点/终点参数是包含纬度、经度的二元结构(如元组(lat, lng)、列表[lat, lng]),但你传入的是逗号拼接的字符串,方法无法正确拆分出两个坐标值。- 循环中错误地将整个
basepoint列(Series对象)作为终点传入,而非当前行对应的单个终点坐标。 - 代码存在变量名错误:
Sourced未定义,实际应该是读取后的file对象。
修复后的代码
from radar import RadarClient import pandas as pd API_key = 'API' radar = RadarClient(API_key) # 读取Excel文件 file = pd.read_excel('files') # 直接生成坐标元组(无需拼接成字符串) file['AntGeo'] = file.apply(lambda row: (row['Ant_lat'], row['Ant_long']), axis=1) file['BaseGeo'] = file.apply(lambda row: (row['Base_lat'], row['Base_long']), axis=1) # 遍历每一行的起点和终点 for idx, row in file.iterrows(): antpoint = row['AntGeo'] basepoint = row['BaseGeo'] # 传入符合要求的二元坐标结构 dist_response = radar.route.distance(antpoint, basepoint, modes='transit') dist_km = dist_response['routes'][0]['distance'] / 1000 # 将计算结果存回DataFrame file.loc[idx, 'Distance_km'] = dist_km # 可选:保存结果到Excel文件 file.to_excel('distance_result.xlsx', index=False)
关键修正点
- 摒弃坐标字符串拼接,直接生成元组格式的坐标对,完全匹配radar方法的参数要求。
- 使用
iterrows()遍历每一行,确保每次循环取到的是对应行的单个起点和终点,而非整列数据。 - 修正
Sourced的变量名错误,替换为实际的file对象。 - 新增结果存储逻辑,方便后续查看和使用计算数据。
内容的提问来源于stack exchange,提问作者khkyt
相关产品推荐
相关产品推荐

