python - 通过坐标接近度对 Pandas DataFrame 进行排序
问题描述
我正在使用包含与特定x-y
坐标关联的多个字段的数据集。数据框有 和 列df['x']
,df['y']
表示每一行的坐标对。我希望按欧几里德距离对数据框进行排序,以便我知道相邻的行是最接近的(我希望有多行与给定的行具有相同的距离)。
我该怎么做呢?
澄清 如果排序数据帧中的第一行是原始数据帧中的随机行,则排序数组中的第二行应该是与第一行欧几里得距离最小的元素,第三行应该是欧几里得最小的元素到前一行的距离等。
可能相关或不相关的额外上下文 我要解决的真正问题是我丢失了数据。我的想法是在邻居的给定行中插入缺失值,但这需要这种排序。为此,我只是使用 Pandas 的 interpolate() 函数。
解决方案
您可以将函数应用于返回距离的每一行,然后按该距离排序。(我在下面的示例中使用了一个用于欧几里得距离的 numpy 函数)
df['dist'] = df[['x', 'y']].apply(lambda row: np.linalg.norm((row.x, row.y)), axis=1)
df.sort_values('dist', ignore_index=True, inplace=True)
推荐阅读
- vue.js - 尝试将自定义类添加到正文元素时,为什么在 Nuxt JS 中出现 SSR 编码错误?
- asp.net-core - 如何为 .NET Core Open ID Connect 设置回调主机(不是路径)?
- python - 将列表中的连续整数分组,它们之间具有特定的容差 Python3
- c - 具有完全可重现示例 C 的 AVL 树上的旋转
- html - Firefox 上的样式滚动条。如何摆脱滚动条上的黑色边框/轮廓?
- reactjs - 我想在单击重置按钮时清除输入字段中的所有信息和状态
- reactjs - React:如何使用这个 API?
- flutter - 为什么 MaterialPageRoute 在颤动中回到原始页面
- java - 从 Firebase 实时数据库中检索历史数据
- angular - Angular:将数据传递给父组件后,子组件监听返回