使用定制距离函数从 Pandas Dataframe 创建距离矩阵

2024-05-27

我有一个包含两列的 Pandas 数据框:“id”(唯一标识符)和“date”,如下所示:

test_df.head()

    id  date
0   N1  2020-01-31
1   N2  2020-02-28
2   N3  2020-03-10

我创建了一个自定义 Python 函数,给定两个日期字符串,将计算这些日期之间的绝对天数(使用给定的日期格式字符串,例如 %Y-%m-%d),如下所示:

def days_distance(date_1, date_1_format, date_2, date_2_format):
    """Calculate the number of days between two given string dates

    Args:
        date_1 (str): First date
        date_1_format (str): The format of the first date
        date_2 (str): Second date
        date_2_format (str): The format of the second date

    Returns:
        The absolute number of days between date1 and date2
    """

    date1 = datetime.strptime(date_1, date_1_format)
    date2 = datetime.strptime(date_2, date_2_format)
    return abs((date2 - date1).days)

我想创建一个距离矩阵,对于所有 ID 对,将计算这些 ID 之间的天数。使用test_df上面的例子,最终的时间距离矩阵应如下所示:

    N1    N2    N3
N1  0     28    39
N2  28    0     11
N3  39    11    0

我正在努力寻找一种使用定制距离函数来计算距离矩阵的方法,例如我的days_distance()上面的函数,与 SciPy 等提供的标准距离测量相反。

有什么建议么?


让我们尝试一下pdist https://docs.scipy.org/doc/scipy-0.17.0/reference/generated/generated/scipy.spatial.distance.pdist.html + squareform https://docs.scipy.org/doc/scipy-0.17.0/reference/generated/scipy.spatial.distance.squareform.html#scipy.spatial.distance.squareform要创建一个表示日期时间对象之间成对差异的平方距离矩阵,最后从该方阵创建一个新的数据框:

from scipy.spatial.distance import pdist, squareform

i, d = test_df['id'].values, pd.to_datetime(test_df['date'])
df = pd.DataFrame(squareform(pdist(d[:, None])), dtype='timedelta64[ns]', index=i, columns=i)

或者,您也可以使用计算距离矩阵numpy广播:

i, d = test_df['id'].values, pd.to_datetime(test_df['date']).values 
df = pd.DataFrame(np.abs(d[:, None] - d), index=i, columns=i)

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

使用定制距离函数从 Pandas Dataframe 创建距离矩阵 的相关文章

  • 获取数据框中列与特定值匹配的整数行索引

    给定一个 Pandas 数据框 其中一列如下所示 Date 2016 04 15 2016 04 14 2016 04 13 2016 04 12 2016 04 11 2016 04 08 假设值是唯一的 如何获取特定值的行索引 例如 2
  • python 2.7模块pandas未安装“无法导入名称哈希表”

    我尝试在论坛 谷歌上寻找这个问题的答案 但我找不到任何东西 我的问题是这样的 来自 python 控制台 gt gt gt import pandas cannot import name hashtable Traceback most
  • 我无法使用 Python 和 Facebook Marketing API 获取所有 Facebook 营销活动的统计信息

    我正在尝试检索以下指标 date campaign name impressions clicks spend 在我的 Facebook 帐户中的所有活动中 但显然我编写的脚本仅返回某些活动的统计数据 而不是全部 它仅返回大多数营销活动的营
  • 预处理 csv 文件以与 tflearn 一起使用

    我的问题是关于在将 csv 文件输入神经网络之前对其进行预处理 我想使用 python 3 中的 tflearn 为著名的 iris 数据集构建一个深度神经网络 数据集 http archive ics uci edu ml machine
  • Python3如何安装.ttf字体文件?

    我想使用 python3 更精确的 Python 3 6 代码在 Windows 10 上安装 ttf 字体文件 我用谷歌搜索 但我发现的唯一的就是这个使用python在windows上安装TTF字体 https stackoverflow
  • 给定日期时间列的熊猫按周分组

    假设我有以下数据样本 df pd DataFrame date 2011 01 01 2011 01 02 2011 01 03 2011 01 04 2011 01 05 2011 01 06 2011 01 07 2011 01 08
  • pyspark 中的 Pandas UDF

    我正在尝试在 Spark 数据帧上填充一系列观察结果 基本上我有一个日期列表 我应该为每个组创建缺失的日期 在熊猫中有reindex函数 这是 pyspark 中不可用的 我尝试实现 pandas UDF pandas udf schema
  • 如何在Python中获取声音级别?

    对于我正在进行的项目 我需要获取麦克风的实时分贝级别 我见过阴谋家 Print out realtime audio volume as ascii bars import sounddevice as sd import numpy as
  • 更改自动插入 tkinter 小部件的文本颜色

    我有一个文本框小部件 其中插入了三条消息 一条是开始消息 一条是结束消息 一条是在 单位 被摧毁时发出警报的消息 我希望开始和结束消息是黑色的 但被毁坏的消息 参见我在代码中评论的位置 插入小部件时颜色为红色 我不太确定如何去做这件事 我看
  • MySQL PHP邮政编码比较具体距离

    我试图找出比较一个邮政编码 用户提供的 和一大堆其他邮政编码 现在大约有 200 个邮政编码 之间的距离的最有效方法 相对于加载时间 但它会随着时间的推移而增加 我不需要任何精确的东西 只是在球场上 我下载了整个美国的邮政编码 csv 文件
  • 表达式中的 Python 'in' 关键字与 for 循环中的比较 [重复]

    这个问题在这里已经有答案了 我明白什么是in运算符在此代码中执行的操作 some list 1 2 3 4 5 print 2 in some list 我也明白i将采用此代码中列表的每个值 for i in 1 2 3 4 5 print
  • 类型错误:只能使用标量值执行操作

    如果您能让我知道如何为所提供的表格绘制一些信息丰富的图表 我将不胜感激here https www iasplus com en resources ifrs topics use of ifrs 例如 我需要一个名为 国内非上市公司 非上
  • VSCode:调试配置中的 Python 路径无效

    对 Python 和 VSCode 以及 stackoverflow 非常陌生 直到最近 我已经使用了大约 3 个月 一切都很好 当尝试在调试器中运行任何基本的 Python 程序时 弹出窗口The Python path in your
  • 协方差矩阵的对角元素不是 1 pandas/numpy

    我有以下数据框 A B 0 1 5 1 2 6 2 3 7 3 4 8 我想计算协方差 a df iloc 0 values b df iloc 1 values 使用 numpy 作为 cov numpy cov a b I get ar
  • Pandas 与 Numpy 数据帧

    看这几行代码 df2 df copy df2 1 df 1 df 1 values 1 df2 ix 0 0 我们的教练说我们需要使用 values属性来访问底层的 numpy 数组 否则我们的代码将无法工作 我知道 pandas Data
  • Pandas loc 有条件的替代方案

    我计划提高非 Pandas 开发人员的可读性 我有以下内容workingPython 代码使用 loc new value stackoverflow s query nbc SUGGESTED suggested QUERY query
  • 如何添加 id 列来标识 read_html() 表?

    考虑以下站点 site1 http pastebin com vpnGqn5X site2 http pastebin com FbAFGbfR site3 http pastebin com LqZWxFSP 其中有许多不同的表 我在用读
  • 如何使用Python和h5py读取HDF5属性(元数据)

    我有一个 HDF5 文件 里面有多个文件夹 每个文件夹都添加了属性 有些将属性称为 元数据 我知道如何访问文件夹内的键 但不知道如何使用 Python 提取属性h5py包裹 以下是 HDFView 的属性 Folder1 800 4 Gro
  • 如何在 python 3.x 中使用 string.replace()

    The string replace 在 python 3 x 上已弃用 这样做的新方法是什么 与 2 x 一样 使用str replace https docs python org library stdtypes html str r
  • neo4j - python 驱动程序,服务不可用

    我对 neo4j 非常陌生 我正在尝试建立从 python3 6 到 neo4j 的连接 我已经安装了驱动程序 并且刚刚开始执行第一步 导入请求 导入操作系统 导入时间 导入urllib 从 neo4j v1 导入 GraphDatabas

随机推荐

  • 有没有免费的在线 Maven 存储库?

    有没有免费的在线私人maven2或maven3存储库 这样该团队就可以从各个区域访问存储库 如果您使用 github 则可以使用私有 github 项目作为您的 Maven 存储库 这里有关于如何将 Maven 工件发布到 github 的
  • 在 Windows 上安装 RMagick

    我对此进行了研究 并且在我的一台计算机上花了几个小时 大约三周前 我在我的台式计算机上安装了 RMagick 它相当复杂 我不记得我采取的具体步骤 我真的很沮丧 我已将 ImageMagick 安装到我的计算机上的目录 C ImageMag
  • 在屏幕外绘制 uiview

    我想创建一个 UIView 它在调用 ViewDidLoad 时位于屏幕外 但一旦调用某个函数 我就会将其动画显示到屏幕上 用于对 UIView 进行动画处理的代码很好 但我似乎无法从屏幕外绘制 UIView 我已将故事板中的 UIView
  • 使用用户名进行 Java LDAP 身份验证

    好吧 这让我发疯 我正在尝试使用 Java 创建 LDAP 身份验证 如果我在 SECURITY PRINCIPAL 中使用我的名字和姓氏 一切都很好 这是我的代码 try Hashtable
  • 具有列顺序的响应式多列列表

    我正在尝试创建一个有序的多列列表 但正在努力解决 CSS 网格布局规则 期望的结果应该是响应式的 在小屏幕上有 2 个网格列 在较大的屏幕上最多有 4 个网格列 同时保持列顺序 而不是像这样排序 1 2 3 4 5 6 7 8 9 10 1
  • 活动片段已清除索引:-1 是什么意思以及如何修复它?

    我有一个带有自定义滑动菜单的活动 用于类似选项卡的界面 由于某种原因 我的一个 且只有一个 片段出现此错误 我似乎找不到它在做什么 这是堆栈跟踪 E FragmentManager 13024 Failure saving state ac
  • 如何修改 Elasticsearch 文档的 _source 字段

    问题 有没有办法从文档的 source 中清除 html html 的剥离可以是周期性的 触发的 或者理想情况下是在索引时即时进行的 我将数据输入到elasticsearch中 并针对分析器进行索引 该分析器在索引之前剥离不需要的htmls
  • 如何将 FAB 转换为弹出菜单?

    根据材料设计指南 https material google com components buttons floating action button html buttons floating action button transit
  • NestJS:使用 JWT 将验证选项添加到 AuthGuard

    我正在尝试利用AuthGuard装饰器和护照 JWT 策略 遵循文档 https docs nestjs com techniques authentication 文档中的所有内容都运行良好 但我现在想保护 JWT 中包含的范围的路由 这
  • *这个对象的大小

    Code include
  • Eclipse 内容协助无法在枚举常量参数列表中工作

    使用 eclipse 当我输入以下内容时 public enum Foo A Integer private final Integer integer private Foo Integer integer this integer in
  • Python 比编译的 Haskell 更快?

    我有一个用 Python 和 Haskell 编写的简单脚本 它读取包含 1 000 000 个换行符分隔的整数的文件 将该文件解析为整数列表 对其进行快速排序 然后将其写入已排序的不同文件中 该文件与未排序的文件具有相同的格式 简单的 这
  • Delphi 是否在构造对象之前分配变量?

    Delphi 是否在对象完全构造之前分配实例变量 换句话说 给定一个变量 var customer TCustomer nil 然后我们构造一个客户并将其分配给变量 customer TCustomer Create 有没有可能custom
  • 如果模板包含虚函数安全吗?

    模板的早期绑定和虚函数的后期绑定 那么 模板中包含虚函数安全吗 template
  • 禁用 Google+ 社交登录的自动身份验证

    我正在寻找一种方法来避免用户在刷新页面时在我的网络应用程序中自动进行身份验证 例如 用户使用他的 Google 帐户连接到我的网络应用程序并使用该应用程序一段时间 稍后 当他回来时 我希望应用程序要求他再次单击登录按钮 而不是自动将他识别为
  • Combox SelectedIndexChanged 关闭 WinForm 时触发

    我正在使用 Combobox SelectedIndexChanged 事件来执行一些任务 它工作得很好 但是当我关闭表单时 SelectedIndexChanged 被触发 并且我得到 对象引用未设置到对象的实例 例外 我的代码如下 pr
  • Java 中的 TreeSet 与 C#.net 的等效项

    我有 Java 代码 其中包含TreeSet 我想将代码转换为 C 我可以使用哪个等效集合 如果没有 请提出替代方案 那将是系统 集合 通用 SortedSet
  • 使用多种颜色来突出显示

    我有这个示例代码来突出显示表格的特定单元格 有没有办法切换颜色或同时使用多种颜色 我需要在这里实现两件事 1 我希望能够在单击参数组 或单独的参数 之前将其颜色设置为前端的某种颜色 最多 5 种颜色就足够了 2 参数选择哪种颜色并不重要 颜
  • 包含 Xcode 上添加的框架的标头

    我想使用一些框架 例如glew and cg所以我手动添加 通过右键单击项目 gt 将文件添加到 来将所需的框架添加到我的项目中 并选择正确的框架 问题是 当我尝试包含头文件时 Xcode 找不到其中任何一个 我希望这张图能帮助理解 And
  • 使用定制距离函数从 Pandas Dataframe 创建距离矩阵

    我有一个包含两列的 Pandas 数据框 id 唯一标识符 和 date 如下所示 test df head id date 0 N1 2020 01 31 1 N2 2020 02 28 2 N3 2020 03 10 我创建了一个自定义