【发布时间】:2019-09-09 20:21:40
【问题描述】:
我有一个数据集包含四列中两个点的纬度/经度,并尝试使用 geopy.distance 在新添加的列中计算它们之间的距离。
如果我计算单个值但不适用于整个列,它工作正常。
import pandas as pd
from geopy import distance
sub_set = main[['Site_1','Site_Longitude_1','Site_Latitude_1','Site_2','Site_Longitude_2','Site_Latitude_2']]
lat1 = sub_set['Site_Latitude_1']
lat2 = sub_set['Site_Latitude_2']
long1 = sub_set['Site_Longitude_1']
long2 = sub_set['Site_Longitude_2']
数据框sub_set如下
Site_1 Site_Longitude_1 Site_Latitude_1 Site_2 Site_Longitude_2 Site_Latitude_2
0 A -118.645167 34.237917 A2 -118.6499422 34.24973484
1 A -118.645167 34.237917 A2 -118.6499422 34.24973484
2 B -118.626659 34.224762 A2 -118.6499422 34.24973484
3 B -118.626659 34.224762 A2 -118.6499422 34.24973484
4 B -118.626659 34.224762 A2 -118.6499422 34.24973484
在执行时,
sub_set['Distance'] = distance.distance((lat1,long1),(lat2,long2)).miles
抛出以下错误信息,
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all()
【问题讨论】:
-
这里是错误:ValueError:一个Series的真值是不明确的。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()。
-
请直接在问题中添加
-
您需要传递值的元组,而不是系列的元组。我的理解是,您需要遍历行进行此类计算,除非您愿意使用 Haversine 的矢量化实现
标签: python pandas dataframe geopy