python - 将数据帧值与另一个数据帧值的值进行比较
问题描述
好的,所以我有两个数据框
数据框
name LAT LONG
0 AAA XX.XX XX.XX
1 BBB XX.XX XX.XX
2 CCC XX.XX XX.XX
3 DDD XX.XX XX.XX
数据框 b
name LAT LONG
0 EEE XX.XX XX.XX
1 FFF XX.XX XX.XX
2 GGG XX.XX XX.XX
3 HHH XX.XX XX.XX
现在我想创建一个新的数据帧,其中包含数据帧 a 中的所有点,其中数据帧 a 的点与数据帧 b 中的点之间的距离小于 X 米。
我使用嵌套的 for 循环来实现这一点,但这需要太多时间。我使用公式 geopy.distance.distance(coords_1, coords_2).meters 来计算距离。
任何的意见都将会有帮助!
解决方案
我不熟悉geopy或使用LAT/LONG,但如果我有两个坐标并且想要一个df中的点足够接近另一个df中的一个点,我会做这样的事情
data1 = [['aaa', 1, 2], ['bbb', 3, 5]]
data2 = [['ccc', 1, 8], ['ddd', 3, 9]]
columns_names = ['name', 'LAT', 'LONG']
df1 = pd.DataFrame(data1, columns=column_names)
df2 = pd.DataFrame(data2, columns=column_names)
distance_of_interest = 6 # or 1 in your case
df3 = pd.DataFrame(df1[np.sqrt((df1.LAT-df2.LAT)**2 + (df1.LONG - df2.LONG)**2) < distance_of_interest],
columns=column_names)
df3 >
name LAT LONG
1 bbb 3 5
虽然这假设点aaa
对应于ccc
等。如果你想比较aaa
两者ccc
,ddd
我无法想出一个不使用 for 循环的快速答案。
希望它可以帮助您以某种方式解决它,祝您好运。
推荐阅读
- java - jpa命名本机查询无结果
- react-admin - 如何使用 react-admin 合并表格中的两个或多个单元格?
- arrays - 我的 Fortran 动态分配代码有什么问题?
- flutter - 如何仅在抽屉上应用 BackdropFilter 模糊?
- c - 我不知道 Windows 中 c 的 lib 文件在哪里
- java - 你将如何处理未来可能不同的两个相同的值对象?
- sql-server - 使用带有参数化查询的 pyodbc 将数据库读入数据框
- python - pytest期间的isinstance断言给出完整级别的Class而不是本地导入的Class?
- docker - 防止 Docker 拉取远程仓库
- javascript - 如何在ExpressJS中的一段时间后从字典中删除对象