DataFrame真值判断歧义报错求助:坐标距离计算代码问题
问题解决:DataFrame布尔值歧义报错
错误原因
你遇到的报错源于两个问题:
- 参数传错:调用
haversine_np(x,y,u,v)时,误把v(d.items()返回的整个DataFrame/Series对象)当成单个坐标值传入,导致计算出的distance是一个DataFrame/Series而非单个数值。在if distance < 0.03中直接判断整个DataFrame的布尔值,Python无法确定你要判断全部元素还是任意元素满足条件,因此抛出歧义错误。 - 循环缩进错误:外层
for k, v in d.items():后的内层循环没有缩进,会触发语法错误。
修正后的代码
for k, v in d.items(): for x, y in zip(df3['0'], df3['1']): for u, w in zip(v['0'], v['1']): # 将参数v替换为w,对应第二个坐标对的第二个值 distance = haversine_np(x, y, u, w) if distance < 0.03: print(x, u, y, w, distance)
关键说明
- 确认
haversine_np函数是接收四个单个数值参数(如纬度、经度对)计算两点距离的,这样返回的distance是单个数值,能正常与0.03比较。 - Python靠缩进区分代码块,外层循环的内层代码必须缩进4个空格(或1个制表符)。
内容的提问来源于stack exchange,提问作者Lalit Chavan
相关产品推荐
相关产品推荐

