我有两个要加入的文件。这两个文件的表示如下:
Hour Longitude Latitude
12:00 116.5 39.5
另一个文件是这样的:
Some_datas Longitude Latitude Some_other_datas ...
x 116.529 39.521 x ...
x 116.632 39.471 x ...
x 116.233 39.556 x ...
x 116.445 39.990 x ...
etc..
我想从第二个文件中获取所有行并将它们放在另一个文件中,但前提是经度和纬度相近(让我们说15公里)。
使用我发现的功能:
import geopy.distance
coords_1 = (116.5, 39.5)
coords_2 = (x,y) # Where x and y are longitude and latitude from the second file
print geopy.distance.vincenty(coords_1, coords_2).km
如何制作它以便读取第二个文件的所有点,检查它是否在15公里以下,如果是,则将它们放在另一个csv文件中。
答案 0 :(得分:1)
我认为您需要zip
两列,获取距离,然后比较创建一个布尔列表:
from geopy.distance import vincenty
#coordinates are swapped
coords_1 = (39.5, 116.4)
mask = [vincenty(coords_1, (i, j)).km < 15 for i, j in zip(df['Latitude'], df['Longitude'])]
print (mask)
[True, False, False, False]
过滤
df1 = df[mask]
print (df1)
Some_datas Longitude Latitude Some_other_datas
0 x 116.529 39.521 x
...并写入文件:
df1.to_csv(file, index=False)