计算 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 数据框中最近邻居的平均距离 的相关文章

  • 如何在 Matplotlib 饼图周围绘制箭头以将每个标签指向圆圈中各自的部分?

    我一直在用 Matplotlib 绘制一些图表 我有一个饼图 想要在图表周围绘制箭头 使每个标签都指向图表 我有一个例子 这是我当前的代码 import matplotlib pyplot as plt plt rcParams font
  • 我应该使用 Python 双端队列还是列表作为堆栈? [复制]

    这个问题在这里已经有答案了 我想要一个可以用作堆栈的 Python 对象 使用双端队列还是列表更好 元素数量较少还是数量较多有什么区别 您的情况可能会根据您的应用程序和具体用例而有所不同 但在一般情况下 列表非常适合堆栈 append is
  • 嵌套列表的重叠会产生不必要的间隙

    我有一个包含三个列表的嵌套 这些列表由 for 循环填充 并且填充由 if 条件控制 第一次迭代后 它可能类似于以下示例 a 1 2 0 0 0 0 0 0 4 5 0 0 0 0 0 0 6 7 根据条件 它们不重叠 在第二次迭代之后 新
  • 在 Django Admin 中调整字段大小

    在管理上添加或编辑条目时 Django 倾向于填充水平空间 但在某些情况下 当编辑 8 个字符宽的日期字段或 6 或 8 个字符的 CharField 时 这确实是一种空间浪费 字符宽 然后编辑框最多可容纳 15 或 20 个字符 我如何告
  • Python 3d 绘图设置固定色阶

    我正在尝试绘制两个 3d 数组 第一个数组的 z 值在范围内 0 15 0 15 第二个来自 0 001 0 001 当我绘图时 色标自动遵循数据范围 如何设置自定义比例 我不想看到 0 001 的浅色 而应该看到 0 15 的浅色 如何修
  • 为什么 web2py 在启动时崩溃?

    我正在尝试让 web2py 在 Ubuntu 机器上运行 所有文档似乎都表明要在 nix 系统上运行它 您需要下载源代码并执行以下操作 蟒蛇 web2py py 我抓住了source http www web2py com examples
  • Pycharm 在 os.path 连接上出现“未解析的引用”

    将pycharm升级到2018 1 并将python升级到3 6 5后 pycharm报告 未解析的引用 join 最新版本的 pycharm 不会显示以下行的任何警告 from os path import join expanduser
  • 为什么一旦我离开内置的运行服务器,Django 就无法找到我的管理媒体文件?

    当我使用内置的简单服务器时 一切正常 管理界面很漂亮 python manage py runserver 但是 当我尝试使用 wsgi 服务器为我的应用程序提供服务时django core handlers wsgi WSGIHandle
  • 嵌套作用域和 Lambda

    def funct x 4 action lambda n x n return action x funct print x 2 prints 16 我不太明白为什么2会自动分配给n n是返回的匿名函数的参数funct 完全等价的定义fu
  • 将 Matlab 的 datenum 格式转换为 Python

    我刚刚开始从 Matlab 迁移到 Python 2 7 在读取 mat 文件时遇到一些问题 时间信息以 Matlab 的日期数字格式存储 对于那些不熟悉它的人 日期序列号将日历日期表示为自固定基准日期以来已经过去的天数 在 MATLAB
  • 带有 LSTM 的 GridSearchCV/RandomizedSearchCV

    我一直在尝试通过 RandomizedSearchCV 调整 LSTM 的超参数 我的代码如下 X train X train reshape X train shape 0 1 X train shape 1 X test X test
  • 为什么 csv.DictReader 给我一个无属性错误?

    我的 CSV 文件是 200 Service 我放入解释器的代码是 snav csv DictReader open screennavigation csv delimiter print snav fieldnames 200 for
  • 每当使用 import cv2 时 OpenCV 都会出错

    我在终端上使用 pip3 install opencv contrib python 安装了 cv2 并且它工作了 但是每当我尝试导入 cv2 或运行导入了 cv2 的 vscode 文件时 在 python IDLE 上它都会说 Trac
  • 制作一份 Python 文档的 PDF 文件

    Python 官方网站提供 PDF 文档下载 但它们是按章节分隔的 我下载了源代码并构建了 PDF 文档 这些文档也是单独的 PDF 我怎么能够从源代码中的 Makefile 构建一个 PDF 文件 我认为这样阅读起来会更方便 如果连接单独
  • 如何将 Django 中的权限添加到模型并使用 shell 进行测试

    我在模型中添加了 Meta 类并同步了数据库 然后在 shell 中创建了一个对象 它返回 false 所以我真的无法理解错误在哪里或者缺少什么是否在其他文件中可能存在某种配置 class Employer User Employer in
  • pandas.read_csv 将列名移动一倍

    我正在使用位于的 ALL zip 文件here http www fec gov disclosurep PDownload do 我的目标是用它创建一个 pandas DataFrame 但是 如果我跑 data pd read csv
  • pytest找不到模块[重复]

    这个问题在这里已经有答案了 我正在关注pytest 良好实践 https docs pytest org en latest explanation goodpractices html test discovery或者至少我认为我是 但是
  • JSON:TypeError:Decimal('34.3')不是JSON可序列化的[重复]

    这个问题在这里已经有答案了 我正在运行一个 SQL 查询 它返回一个小数列表 当我尝试将其转换为 JSON 时 出现类型错误 查询 res db execute SELECT CAST SUM r SalesVolume 1000 0 AS
  • NLTK:查找单词大小为 2k 的上下文

    我有一个语料库 我有一个词 对于语料库中该单词的每次出现 我想获取一个包含该单词之前的 k 个单词和该单词之后的 k 个单词的列表 我在算法上做得很好 见下文 但我想知道 NLTK 是否提供了一些我错过的功能来满足我的需求 def size
  • 如何在Python脚本中从youtube-dl中提取文件大小?

    我是 python 编程新手 我想在下载之前提取视频 音频大小 任何 YouTube 视频 gt gt gt from youtube dl import YoutubeDL gt gt gt url https www youtube c

随机推荐

  • 搜索非 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