计算 pandas 数据框中最近邻居的平均距离

2023-12-06

我有一组对象及其随时间变化的位置。我想获取每辆车与其最近邻居之间的距离,并计算每个时间点的平均值。示例数据框如下:

 time = [0, 0, 0, 1, 1, 2, 2]
 x = [216, 218, 217, 280, 290, 130, 132]
 y = [13, 12, 12, 110, 109, 3, 56]
 car = [1, 2, 3, 1, 3, 4, 5]
 df = pd.DataFrame({'time': time, 'x': x, 'y': y, 'car': car})
 df

         x       y      car
 time
  0     216     13       1
  0     218     12       2
  0     217     12       3
  1     280     110      1
  1     290     109      3
  2     130     3        4
  2     132     56       5

对于每个时间点,我想知道每辆车最近的邻居。例子:

df2

          car    nearest_neighbour    euclidean_distance  
 time
  0       1            3                    1.41
  0       2            3                    1.00
  0       3            1                    1.41
  1       1            3                    10.05
  1       3            1                    10.05
  2       4            5                    53.04
  2       5            4                    53.04

我知道我可以计算汽车之间的成对距离如何将欧氏距离函数应用于 pandas 数据框中的 groupby 对象?但我如何获得每辆车的最近邻居?

之后,使用 groupby 获得每帧距离的平均值似乎很简单,但真正让我失望的是第二步。 帮助表示赞赏!


这可能有点矫枉过正,但你可以使用距离 scikit 最近的邻居

一个例子:

import numpy as np 
from sklearn.neighbors import NearestNeighbors
import pandas as pd

def nn(x):
    nbrs = NearestNeighbors(n_neighbors=2, algorithm='auto', metric='euclidean').fit(x)
    distances, indices = nbrs.kneighbors(x)
    return distances, indices

time = [0, 0, 0, 1, 1, 2, 2]
x = [216, 218, 217, 280, 290, 130, 132]
y = [13, 12, 12, 110, 109, 3, 56] 
car = [1, 2, 3, 1, 3, 4, 5]
df = pd.DataFrame({'time': time, 'x': x, 'y': y, 'car': car})

#This has the index of the nearest neighbor in the group, as well as the distance
nns = df.drop('car', 1).groupby('time').apply(lambda x: nn(x.as_matrix()))

groups = df.groupby('time')
nn_rows = []
for i, nn_set in enumerate(nns):
    group = groups.get_group(i)
    for j, tup in enumerate(zip(nn_set[0], nn_set[1])):
        nn_rows.append({'time': i,
                        'car': group.iloc[j]['car'],
                        'nearest_neighbour': group.iloc[tup[1][1]]['car'],
                        'euclidean_distance': tup[0][1]})

nn_df = pd.DataFrame(nn_rows).set_index('time')

Result:

      car  euclidean_distance  nearest_neighbour
time                                            
0       1            1.414214                  3
0       2            1.000000                  3
0       3            1.000000                  2
1       1           10.049876                  3
1       3           10.049876                  1
2       4           53.037722                  5
2       5           53.037722                  4

(请注意,在时间 0,汽车 3 的最近邻居是汽车 2。sqrt((217-216)**2 + 1)是关于1.4142135623730951 while sqrt((218-217)**2 + 0) = 1)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

计算 pandas 数据框中最近邻居的平均距离 的相关文章

  • scipy.misc.imshow RuntimeError('无法执行图像视图')

    我正在测试scipy misc imshow https docs scipy org doc scipy 0 15 1 reference generated scipy misc imshow html我得到了运行时错误 无法执行图像查
  • pip 安装失败,SSL 证书验证失败 (_ssl.c:833)

    我无法通过 pip install 安装任何外部 python 模块 我已经正确安装了 python 但如果我使用 pip install 它会显示此错误 这是我运行后的代码pip install pytesseract C Users 1
  • Python sqlite3参数化删除表

    我在 python 中删除 sqlite3 表时遇到问题 我正在使用标准sqlite3模块 self conn sqlite3 connect sql drop table self conn execute sql u table nam
  • Python 按照层次结构按多个分隔符分割字符串

    我只想根据多个分隔符 例如 and 和 按顺序分割字符串一次 例子 121 34 adsfd gt 121 34 adsfd dsfsd and adfd gt dsfsd adfd dsfsd adfd gt dsfsd adfd dsf
  • 使用 Pymongo 从 Windows 连接到 AWS 实例上的 MongoDB

    此行反复抛出错误 client MongoClient ec2 12 345 67 89 us east 2 compute amazonaws com 27017 ssl True ssl keyfile C mongo pem 由于显而
  • Seaborn 热图中的自定义调色板间隔

    我正在尝试绘制一个heatmap https seaborn pydata org generated seaborn heatmap html使用seaborn库 绘图函数如下所示 def plot confusion matrix da
  • 了解 asyncio 已经运行的永久循环和挂起的任务

    我在理解如何将新任务挂起到已经运行的事件循环中时遇到问题 这段代码 import asyncio import logging asyncio coroutine def blocking cmd while True logging in
  • 在 vim 折叠线中语法高亮 Python

    我发现代码折叠 http en wikipedia org wiki Code folding帮助我更好地组织我的文件 因此 在我的底部 vimrc 我启用vim代码折叠 http vimdoc sourceforge net htmldo
  • 从主机名中提取域名

    是否有一种编程方式可以从给定的主机名查找域名 给出 gt www yahoo co jp 返回 gt yahoo co jp 有效但非常慢的方法是 拆分为 并从左侧删除 1 个组 使用 dnspython 加入并查询 SOA 记录 当返回有
  • 类型错误:需要 Future 或协程

    我尝试在 asyncssh 上自动重新连接 ssh 客户端 SshConnectManager 必须留在后台并在需要时进行 ssh 会话 class SshConnectManager object def init self host u
  • 使用 3d 对象作为 3d 散点图中的标记 - Python

    使用下面的代码 我尝试模拟一个用罐头制成的碗 我希望每个标记都是一个罐头 最好的方法是什么 我真的很感激任何建议 谢谢 import pylab import numpy as np from math import pi sin cos
  • Python,多线程,获取网页,下载网页

    我想在一个站点批量下载网页 我的 urls txt 文件中有 5000000 个 url 链接 大约有300M 如何让多线程链接这些网址并下载这些网页 或者如何批量下载这些网页 我的想法 with open urls txt r as f
  • 如何在 Pytorch 中将一维 IntTensor 转换为 int

    如何将一维 IntTensor 转换为整数 这 IntTensor int 给出错误 KeyError Variable containing 423 torch IntTensor of size 1 我所知道的最简单 最干净的方法 In
  • 如何绘制多类分类器的精度和召回率?

    我正在使用 scikit learn 我想绘制精度和召回曲线 我正在使用的分类器是RandomForestClassifier scikit learn 文档中的所有资源都使用二元分类 另外 我可以绘制多类的 ROC 曲线吗 另外 我只找到
  • 检查多个 pd.DataFrame 是否相等

    是否有一种 Pythonic 方式 无循环或递归 来检查是否超过两个pd DataFrames 例如 pd DataFrames 列表 彼此相等吗 就像是 all x equals dfs 0 for x in dfs with dfs数据
  • 在python中安装scipy模块时出错

    我正在尝试使用 pip 在 python 中安装 scipy 模块 它显示以下错误 Command c users sony appdata local programs python python35 32 python exe u c
  • Python 中的十进制到二进制半精度 IEEE 754

    我只能使用以下命令将十进制转换为二进制单精度 IEEE754struct pack模块 或者使用相反的方法 float16 或 float32 numpy frombuffer 是否可以使用 Numpy 将十进制转换为二进制半精度浮点数 我
  • Python 队列 get()/task_done() 问题

    我的消费者端队列 m queue get queue task done
  • 如何限制scrapy请求对象?

    所以我有一个蜘蛛 我认为它正在泄漏内存 结果当我检查 telnet 控制台 gt gt gt prefs 时 它只是从链接丰富的页面中抓取了太多链接 有时它会超过 100 000 个 现在我已经一遍又一遍地浏览文档和谷歌 但我找不到一种方法
  • django admin 中内联模型的分页器

    我有这个简单的 django 模型 由一个传感器和特定传感器的值组成 每个日射强度计的值数量很多 gt 30k 是否可以以某种方式分页PyranometerValues在特定日期或一般情况下将分页器应用于管理内联视图 class Pyran

随机推荐

  • 搜索非 ASCII 字符

    我有一个文件 a out 其中包含多行 每一行只有一个字符 要么是 unicode 字符U 2013或小写字母a z 对 a out 执行文件命令会得到结果 UTF 8 Unicode 文本 locale 命令报告 LANG en US U
  • android应用程序可以只有广播接收器和服务而没有活动吗

    Android应用程序可以只有广播接收器和服务而没有活动吗 如果这是可能的 我如何调用广播接收器 Android 系统自动调用broadcsat 接收器 广播接收者代码 public class CheckReceiver extends
  • 在 opencart 中获取第三级类别

    我想要foreachOpenCart 类别模块的第三级 这是仅生成 2 级类别的代码 请帮助并修改 以便生成第三级 ul li a href a ul ul li ul
  • 如果没有 javascript 没有返回内容,如何隐藏 iframe

    我正在尝试制作一个具有特定大小的内容区域 但如果 api 返回的结果是 我希望不显示任何内容empty 这是 html 的代码 div class myclass div 我调用的 API 有时可能会返回 null 结果 JavaScrip
  • Curl : * 违反 RFC 2616/10.3.2 并从 POST 切换到 GET

    我正在使用curl 发布到脚本 curl setopt ch CURLOPT POST true curl setopt ch CURLOPT URL url curl setopt ch CURLOPT RETURNTRANSFER 1
  • 连接误差线的平均点

    在 ggplot2 中 我正在尝试做一件简单的事情 但由于某种原因我无法做到 我已经在数据框中调整了均值和 SE 并且想要绘制均值 误差线 然后将均值与点连接起来 这是代码和错误 除了将方法与geom line 与RC食谱 library
  • 无法使用 yum 或 rpm 在 Fedora 上安装 jdk

    帮助 我不知道如何安装jdk usr lib jvm su c yum install java 1 7 0 openjdk devel Loaded plugins langpacks presto refresh packagekit
  • XSLT 在没有命名空间的情况下复制元素

    首先我要说明的是 我并不是特别擅长 XSLT 但我想做的是将 3 个 XML 文档复制到一个父文档中 XSLT 工作正常 只是父节点使用 xmlns 属性打印 这导致我的验证失败 所以我的问题是如何从单独的文档中复制这些元素而不添加 xml
  • XML DOM文档优化

    我有一个 5MB 的 XML 文件 我使用以下代码来获取所有nodeValue dom new DomDocument 1 0 UTF 8 if dom gt load url return games dom gt getElements
  • 边框半径以百分比 (%) 和像素 (px) 或 em 表示

    如果我使用一个像素或em值对于边界半径 边缘半径始终为圆弧 or a 药丸形状即使该值大于元素的最大边 当我使用百分比 边缘半径是椭圆形的 并从元素每条边的中间开始 从而产生卵形或椭圆形 边框半径的像素值 div background te
  • 使用 Ruby 和 imagemagick 获取或计算图像的熵

    如何在 Ruby 中使用 imagemagick 最好是 mini magic 找到 熵 我需要这个作为一个更大项目的一部分 找到图像中的 有趣之处 以便裁剪它 我找到了一个好的Python Django 中的示例 给出以下伪代码 imag
  • 通过 Graph API 安排的帖子经常无法发布

    您好 我正在使用 facebook php sdk 向我的粉丝专页发帖 我正在尝试将这些帖子安排在未来 不过我遇到了一些问题 这是我的代码
  • 销毁静态互斥锁和 rwlock 初始值设定项

    假设我们有一个使用静态初始化器初始化的全局互斥锁或 rwlock pthread mutex t mutex PTHREAD MUTEX INITIALIZER or pthread rwlock t lock PTHREAD RWLOCK
  • 为什么 Javascript 变量即使没有通过 if 语句,也会被创建为未定义?

    以此为例 if b b 1 参考错误 b 没有定义 有道理 但如果我这样做 if b var b 1 我在控制台中未定义 现在 当我查找 b 是什么时 它显示为未定义 如果我尝试再次执行相同的 if 语句 它不会通过 因为 b 既不是 tr
  • 用于重塑时的 ​​python ravel 与 transpose

    我有一个二维数组v v shape M 1 M 2 我想将其重塑为 3D 数组v shape M 2 N 1 N 2 and M 1 N 1 N 2 我想出了以下几行 它们产生相同的结果 np reshape v T reshape tup
  • 使用 ggplot 和facet_grid 指定误差线

    我做了一个图表facet grid可视化每天每个治疗组中锂的百分比 library ggplot2 library Rmisc library plyr mus2 lt summarySE mus measurevar litium gro
  • Jackson 反序列化:无法识别的字段

    从教程中我的印象是这应该可行 简化的示例 public class Foo private String bar public String getBar return bar public void setBar String bar t
  • Bootstrap 的最佳实践是什么?

    假设您有这个简单的标记 div class container div class row div class col md 12 h1 title h1 div div div 如果我想添加一个margin top带来h1向下朝向容器的中
  • 如何在java中全屏独占模式下处理来自键盘和鼠标的事件?

    在被动渲染模式下 可以使用KeyListener and ActionListener处理来自用户的事件的接口 全屏模式下事件处理的正确方法是什么 请扩展此框架 提供鼠标单击和按键事件的实现 请不要使您的示例膨胀 该示例启动全屏独占模式 使
  • 计算 pandas 数据框中最近邻居的平均距离

    我有一组对象及其随时间变化的位置 我想获取每辆车与其最近邻居之间的距离 并计算每个时间点的平均值 示例数据框如下 time 0 0 0 1 1 2 2 x 216 218 217 280 290 130 132 y 13 12 12 110