【发布时间】:2017-03-30 08:30:51
【问题描述】:
我有两个数据集犯罪和相机。(第一张图片是犯罪-Lon 是经度,Lat 是纬度;第二张是相机-X 是经度,Y 是纬度)
我的目的是选择相机 89('OBJECTID'=89) 内距离小于 200 英尺的所有犯罪。在sql里面应该是这样的
select*
from crime
where "distance with camera89" < 200feet
import pandas as pd
from geopy.distance import vincenty
crime = pd.read_csv('/Users/xccxken/Desktop/crime.csv',low_memory=False)
camera = pd.read_csv('/Users/xccxken/Desktop/camera.csv')
def xycamera(id):
row=camera[camera['OBJECTID'] == id]
x = row[['X']]
y = row[['Y']]
return x,y
print (xycamera(89))
c200 = crime[vincenty((crime['Lon'],crime['Lat']),xycamera(89)).feet>200]
我有一个 ValueError:Series 的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()。在 c200=crime[vincenty((crime['Lon'],crime['Lat']),xycamera(89)).feet>200]
希望有人能告诉我如何解决它。
如果有更好的方法来实现我的目标,那就更好了。谢谢!
这里是一个如何使用 vincenty() 的例子 和https://pypi.python.org/pypi/geopy如果你需要
>>> from geopy.distance import vincenty
>>> newport_ri = (41.49008, -71.312796)
>>> cleveland_oh = (41.499498, -81.695391)
>>> print(vincenty(newport_ri, cleveland_oh).miles)
538.3904451566326
【问题讨论】:
标签: python pandas select error-handling distance