程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何快速将纬度和经度放在一列中?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决如何快速将纬度和经度放在一列中??

开发过程中遇到如何快速将纬度和经度放在一列中?的问题如何解决?下面主要结合日常开发的经验,给出你关于如何快速将纬度和经度放在一列中?的解决方法建议,希望对你解决如何快速将纬度和经度放在一列中?有所启发或帮助;

我需要计算两个数据点之间的距离((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)

正如您所看到的,如果您使用 zip/list/map,它会快得多。

大佬总结

以上是大佬教程为你收集整理的如何快速将纬度和经度放在一列中?全部内容,希望文章能够帮你解决如何快速将纬度和经度放在一列中?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。