大佬教程收集整理的这篇文章主要介绍了如何快速将纬度和经度放在一列中?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我需要计算两个数据点之间的距离((lat1,lon1) 和 (lat2,lon2))。
我找到了一种方法here:
import geopy.distance
coords_1 = (52.2296756,21.0122287)
coords_2 = (52.406374,16.9251681)
print geopy.distance.vincenty(coords_1,coords_2).km
因此我需要将纬度和经度转换为一列 我找到了here的方法,但是需要很多时间。
df["point1"] = df[["lon1","lat1"]].apply(Point,axis=1)
df["point2"] = df[["lon2","lat2"]].apply(Point,axis=1)
有更快的解决方案吗?
尝试使用 geopandas.points_from_xy()
:
import geopandas
df['points1'] = geopandas.points_from_xy(df.lon1,df.lat1)
df['points2'] = geopandas.points_from_xy(df.lon2,df.lat2)
如果仍然太慢,请安装 pygeos
,它将矢量化 points_from_xy()
并加快速度。
如果你想要 (x,y) 形式的元组,你可以这样做:
df = pd.read_csv(r"C:\users\k_sego\LatLong.csv",sep=";")
print(df)
Lat Lon
0 59.214735 18.062262
1 59.214735 18.062262
2 59.214735 18.062262
3 59.213542 18.063627
4 59.212553 18.064678
.. ... ...
70 59.199559 18.046147
71 59.199559 18.046147
72 59.199559 18.046147
73 59.198898 18.05129@R_772_11221@4 59.199044 18.055571
然后
df['new_col'] = list(zip(df.Lat,df.lon))
产生这个:
Lat Lon new_col
0 59.214735 18.062262 (59.214735,18.062262)
1 59.214735 18.062262 (59.214735,18.062262)
2 59.214735 18.062262 (59.214735,18.062262)
3 59.213542 18.063627 (59.213542,18.063627)
4 59.212553 18.064678 (59.212553,18.064678)
.. ... ... ...
70 59.199559 18.046147 (59.199559,18.046147)
71 59.199559 18.046147 (59.199559,18.046147)
72 59.199559 18.046147 (59.199559,18.046147)
73 59.198898 18.051291 (59.198898,18.051291)
74 59.199044 18.055571 (59.199044,18.055571)
,
如果你想要“点”作为元组 -
df['point1'] = list(zip(df['lat1'].values,df['lon1'].values))
如果您想将“点”作为列表 -
df['point1'] = list(map(list,zip(df['lat1'].values,df['lon1'].values)))
性能比较 ->
%timeit geopandas.points_from_xy(df.D,df.b)
108 µs ± 2.55 µs per loop (mean ± std. dev. of 7 runs,10000 loops each)
%timeit list(map(list,zip(df['D'].values,df['B'].values)))
4.82 µs ± 12.3 ns per loop (mean ± std. dev. of 7 runs,100000 loops each)
以上是大佬教程为你收集整理的如何快速将纬度和经度放在一列中?全部内容,希望文章能够帮你解决如何快速将纬度和经度放在一列中?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。