python - 在不循环的情况下比较两个数据帧之间的每个数据点之间的每个数据点
问题描述
我想检查来自 dataframe-1 (df1) 的坐标 (x,y,z),以查看该位置是否足够接近具有存储在 dataframe-2 中的自己的坐标 (x,y,z) 的不规则表面(df2)。
我能够遍历 df1 中的每个坐标,然后遍历 df2 中的所有坐标并检查它的距离。然后对 df1 中的所有坐标重复,但是当我在 df1 中有超过 1,000,000 个坐标要检查时,这将花费很长时间。
我正在使用熊猫,想知道是否可以在不循环的情况下完成。
如果 df1 中的坐标接近 df2,那么我想选择它并将其存储到 df3 中。
解决方案
Scipy 可以帮助你。请看以下假设示例:
import pandas as pd
from scipy.spatial import cKDTree
dataset1 = pd.DataFrame(pd.np.random.rand(100,3))
dataset2 = pd.DataFrame(pd.np.random.rand(10, 3))
ck = cKDTree(dataset1.values)
ck.query_ball_point(dataset2.values, r=0.1)
数组([列表([]),列表([]),列表([]),列表([]),列表([28, 83]),列表([79]),列表([]),列表([86]), 列表([40]), 列表([29, 60, 95])], dtype=object)
推荐阅读
- r - 选择具有特定条件的行并应用函数
- python - 随着字典长度/顺序的变化,如何从字典列表中提取特定值
- firebase - Firebase 自定义声明未在规则中更新
- embedded - 抢占式 RTOS 内核中的 WDT
- javascript - 尝试将 POST 请求从前端正确传递到 java servlet 后端
- php - 如何使用 Google Language API 在使用 PHP 语言的网站中添加多语言?
- typescript - 如何声明导入另一个类型的 TypeScript 模块
- javascript - 如何找到 typedArray 的类型?
- sharepoint - SharePoint Online 图表
- python - 一定范围内的散点图 - python