我想根据其他4列的值生成一个boolean
类型的新列。我有一个函数is_proximal
,它接受两个2元组(4个值)并返回一个布尔值。在
我正在将列从pandas DataFrame传递给这个函数。is_proximal
函数反过来用参数调用geopy.distance.distance
。在
def is_proximal(p1, p2, exact=True):
dist = distance(p1, p2)
if exact:
return dist.miles < 0.75 # mile threshold
return dist.m < 100 # meter threshold
airbnb_coords = (df.loc[:, "lat_airbnb"], df.loc[:, "long_airbnb"])
homeaway_coords = (df.loc[:, "lat_homeaway"], df.loc[:, "long_homeaway"])
exacts.loc[:, "proximal"] = is_proximal(airbnb_coords, homeaway_coords)
这将导致以下错误:
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
我很难理解为什么会发生这个错误。我需要做些什么改变才能完成我正在努力做的事情?在
预期的输出是boolean
类型的附加列。输入数据帧df
在所有列中都包含整数值。在
完整的回溯:
^{pr2}$
从回溯可以清楚地看出,
is_proximal
内部调用的distance
函数中出现了错误。这让我相信,当函数要处理标量数据时,您传递的是Series对象。在请参阅Truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all()中的讨论,在pandas系列中使用python逻辑运算符会导致相同的错误。在
在您的例子中,解决方案是迭代数据,并将每组坐标一次传递给函数。在
相关问题 更多 >
编程相关推荐