使用 pandas.merge_asof 进行全外连接

2023-12-25

您好,我需要将一些时间序列数据与最近的时间戳对齐,所以我认为pandas.merge_asof可能是一个很好的候选人。但是,它没有设置选项how='outer'就像标准中一样merge method.

一个例子可以是:

df1:

                                   Value1
Time
2020-07-17 14:25:03.535906075      108
2020-07-17 14:25:05.457247019      110
2020-07-17 14:25:07.467777014      126

df2:

                                  Value2
Time
2020-07-17 14:25:03.535018921     222
2020-07-17 14:25:04.545104980     150
2020-07-17 14:25:07.476825953      60

然后例如,这样做merge_asof:

pd.merge_asof(df1, df2, left_index=True, right_index=True, direction='nearest', tolerance=pd.Timedelta('0.3s'))

结果将是:

                               Value1  Value2
Time
2020-07-17 14:25:03.535906075     108   222.0
2020-07-17 14:25:05.457247019     110     NaN
2020-07-17 14:25:07.467777014     126    60.0

但我想要的是:

                               Value1  Value2
Time
2020-07-17 14:25:03.535906075     108   222.0
2020-07-17 14:25:04.545104980     NaN   150.0   <---- this is the difference
2020-07-17 14:25:05.457247019     110     NaN
2020-07-17 14:25:07.467777014     126    60.0

基本上就像一个完整的外部连接。

有什么建议吗?提前致谢。

EDIT:

这是有 2 个数据帧的情况。例如,如果有 10 个数据帧(即df1, df2, ..., df10)需要进行这种“最近”合并,什么是一个好方法?


  1. 不幸的是,这儿没有how参数输入pd.merge_asof就像有pd.merge,否则你可以简单地通过how='outer'.
  2. 作为解决方法,您可以append手动从其他数据帧获取不匹配的值
  3. 然后,对索引进行排序.sort_index()

df3 = pd.merge_asof(df1, df2, left_index=True, right_index=True, direction='nearest', tolerance=pd.Timedelta('0.3s'))
df4 = pd.merge_asof(df2, df1, left_index=True, right_index=True, direction='nearest', tolerance=pd.Timedelta('0.3s'))
df5 = df3.append(df4[df4['Value1'].isnull()]).sort_index()
df5
Out[1]: 
                               Value1  Value2
Time                                         
2020-07-17 14:25:03.535906075   108.0   222.0
2020-07-17 14:25:04.545104980     NaN   150.0
2020-07-17 14:25:05.457247019   110.0     NaN
2020-07-17 14:25:07.467777014   126.0    60.0
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 pandas.merge_asof 进行全外连接 的相关文章

  • gitlab 请求将分支 A 合并到开发中(落后 3 次提交)我应该担心吗?

    在 gitlab 中创建合并请求时 我经常收到一条消息 请求将分支 A 合并到开发中 x 提交落后 gitlab想告诉我什么 我应该担心还是需要修复某些东西 什么 一段时间后合并请求在项目中打开时 由于其他人合并了自己的更改 您尝试合并到的
  • 为 pandas 数据透视表中的每个值列定义 aggfunc

    试图生成具有多个 值 列的数据透视表 我知道我可以使用 aggfunc 按照我想要的方式聚合值 但是如果我不想对两列求和或求平均值 而是想要一列的总和 同时求另一列的平均值 该怎么办 那么使用 pandas 可以做到这一点吗 df pd D
  • Python tcl 未正确安装

    我刚刚为 python 安装了graphics py 但是当我尝试运行以下代码时 from graphics import def main win GraphWin My Circle 100 100 c Circle Point 50
  • __del__ 真的是析构函数吗?

    我主要用 C 做事情 其中 析构函数方法实际上是为了销毁所获取的资源 最近我开始使用python 这真的很有趣而且很棒 我开始了解到它有像java一样的GC 因此 没有过分强调对象所有权 构造和销毁 据我所知 init 方法对我来说在 py
  • 合并 2 个大型 CSS 文件的有效方法

    我正在寻找一个可以合并 2 个大型 CSS 文件的工具 到目前为止我尝试过的所有方法 例如CSSMerge 都没有成功 其中一些只是随机删除属性 其他人则因 webkit 和 moz 等非标准属性而窒息 并给我错误 我还需要保留每条规则大小
  • 在循环中每次迭代开始时将变量重新分配给原始值(在循环之前定义)

    在Python中 你使用 在每次迭代开始时将变量重新分配给原始值 在循环之前定义 时 也就是说 original 1D o o o for i in range 0 3 new original 1D revert back to orig
  • 将数据框中重叠的范围合并到唯一的组中

    我有一个 n 行 3 的数据框 df lt data frame start c 178 400 983 1932 33653 end c 5025 5025 5535 6918 38197 group c 1 1 2 2 3 df sta
  • Abaqus 将曲面转化为集合

    我一直试图在模型中找到两个表面的中心 参见照片 但未能成功 它们是元素表面 面 查询中没有选项可以查找元素表面的中心 只能查找元素集的中心 找到节点集的中心也很好 但是我的节点集没有出现在工具 gt 查询 gt 质量属性选项中 而且我找不到
  • python 集合可以包含的值的数量是否有限制?

    我正在尝试使用 python 设置作为 mysql 表中 ids 的过滤器 python集存储了所有要过滤的id 现在大约有30000个 这个数字会随着时间的推移慢慢增长 我担心python集的最大容量 它可以包含的元素数量有限制吗 您最大
  • Pandas Dataframe 中 bool 值的条件前向填充

    问题 如何转发 fill boolTruepandas 数据框中的值 如果是当天的第一个条目 True 到一天结束时 请参阅以下示例和所需的输出 Data import pandas as pd import numpy as np df
  • Geopandas 设置几何图形:MultiPolygon“等于 len 键和值”的 ValueError

    我有 2 个带有几何列的地理数据框 我将一些几何图形从 1 个复制到另一个 这对于多边形效果很好 但对于任何 有效 多多边形都会返回 ValueError 请指教如何解决这个问题 我不知道是否 如何 为什么应该更改 MultiPolygon
  • 使用 OpenPyXL 迭代工作表和单元格,并使用包含的字符串更新单元格[重复]

    这个问题在这里已经有答案了 我想使用 OpenPyXL 来搜索工作簿 但我遇到了一些问题 希望有人可以帮助解决 以下是一些障碍 待办事项 我的工作表和单元格数量未知 我想搜索工作簿并将工作表名称放入数组中 我想循环遍历每个数组项并搜索包含特
  • 表达式中的 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
  • Python:尝试检查有效的电话号码

    我正在尝试编写一个接受以下格式的电话号码的程序XXX XXX XXXX并将条目中的任何字母翻译为其相应的数字 现在我有了这个 如果启动不正确 它将允许您重新输入正确的数字 然后它会翻译输入的原始数字 我该如何解决 def main phon
  • Python 3 中“map”类型的对象没有 len()

    我在使用 Python 3 时遇到问题 我得到了 Python 2 7 代码 目前我正在尝试更新它 我收到错误 类型错误 map 类型的对象没有 len 在这部分 str len seed candidates 在我像这样初始化它之前 se
  • 在Python中重置生成器对象

    我有一个由多个yield 返回的生成器对象 准备调用该生成器是相当耗时的操作 这就是为什么我想多次重复使用生成器 y FunctionWithYield for x in y print x here must be something t
  • 设置 torch.gather(...) 调用的结果

    我有一个形状为 n x m 的 2D pytorch 张量 我想使用索引列表来索引第二个维度 可以使用 torch gather 完成 然后然后还设置新值到索引的结果 Example data torch tensor 0 1 2 3 4
  • VSCode:调试配置中的 Python 路径无效

    对 Python 和 VSCode 以及 stackoverflow 非常陌生 直到最近 我已经使用了大约 3 个月 一切都很好 当尝试在调试器中运行任何基本的 Python 程序时 弹出窗口The Python path in your
  • 对输入求 Keras 模型的导数返回全零

    所以我有一个 Keras 模型 我想将模型的梯度应用于其输入 这就是我所做的 import tensorflow as tf from keras models import Sequential from keras layers imp
  • 您可以在 Python 类型注释中指定方差吗?

    你能发现下面代码中的错误吗 米皮不能 from typing import Dict Any def add items d Dict str Any gt None d foo 5 d Dict str str add items d f

随机推荐

  • 如何正确配置 ASP.NET Core 5 Swagger 以与 Azure A/D 授权代码身份验证配合使用?

    我正在将 ASP NET Core 5 Web API 安全性从隐式升级为授权代码 身份验证是使用 Azure A D 完成的 我还需要允许使用 Swagger 文档 我已经设法使它工作 但 client secret 在我的情况下毫无用处
  • 未找到请求 ajax spring mvc

    我和人们有一张桌子 当我单击删除图标时 我想从数据库中删除该人 并在成功后从表中删除该行 我不断地得到deleteEmployee id 37 not found 404 我有一个控制器 RequestMapping value delet
  • 如何检查 no 是否阶乘?

    我有一个问题 然后给定一些输入数字 n 我们必须检查该 no 是否是其他某个 no 的阶乘 输入 24 输出真输入 25 输出假我为其编写了以下程序 int factorial int num1 if num1 gt 1 return nu
  • ODBC 管理员找不到 Oracle TNS 名称文件

    当我去安装新的 Oracle 时Configuration Management Tools gt Microsoft ODBC Administrator gt System DSN gt Add gt new installation
  • 支持使用 ajax 的浏览器后退按钮而不依赖于哈希更改?

    我目前正在使用 jQuery BBQ 插件来启用 Bowser 导航按钮 但我有一个问题 如果用户为其中一个页面保存书签 比如说 www mysite com page1 当用户通过书签返回时 必须首先加载整个页面 www mysite c
  • 释放指针变量指向的内容后重用它们是否安全?

    释放指针指向的数据后重用指针是否安全且可预测 例如 char fileNames words txt moreWords txt char words NULL int wordsCount NULL for i 0 i lt 2 i da
  • 是否有 Google 自定义搜索 REST API 的工作示例?

    我需要创建一个自动执行 Google 搜索的屏幕 我了解 JavaScript 并且我正在努力让 GSE 工作 我有一个搜索引擎和一个 API 密钥 问题是谷歌的文档是循环的 即页面相互指向 没有可以让我开始研究的工作样本 如果您知道工作示
  • 这两个递归函数可以合并为一个吗?

    int sorted a int arr int N if N 1 N 0 return 1 if arr N 1 lt arr N 2 return 0 return sorted a arr N 1 int sorted d int a
  • 如何从 asmx Web 服务返回纯 XML?

    我想要一个带有方法 GetPeople 的 asmx Web 服务 该方法返回以下 XML 不是 SOAP 响应
  • Perl 中浮点到十进制转换的二进制表示

    我读了堆栈溢出问题如何在 Perl 中将二进制字符串转换为数字 https stackoverflow com questions 483655 how do i convert a binary string to a number in
  • 异步 System.Threading.Timer 有时会抛出空异常[关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 我试图在一段时间间隔后异步执行代码 并且只想在完成代码执行后再次检查以防止重叠 为此 我使用以下变量和计时器代码 pri
  • 伪类和伪元素有什么区别?

    有什么区别div after and div after 我们什么时候必须使用 over 双冒号和单冒号表示法是区分的 伪类和伪元素 上述说法的实际含义是什么 From https developer mozilla org en US d
  • 如何在 Markdown 标记中缩进几行?

    我想写几行文字 它们的格式应正常 但每行应从第六列开始 IE 我不希望代码块格式化规则使这块文本看起来像代码 因为我将使用其他格式 如粗体等 如何在 Markdown 中做到这一点 Markdown 的原生功能无法做到这一点 然而 mark
  • Xcode 9 - 测试目标 X 遇到错误(无法连接到测试管理器)

    我正在尝试运行一些单元测试 但它一直给我错误 Showing Recent Issues Test target X encountered an error Unable to connect to test manager on d73
  • 使用什么算法来计算校验位?

    使用什么算法来计算数字列表的校验位 列表的长度在 8 到 12 位数字之间 也可以看看 如何生成验证码 号码 https stackoverflow com questions 46231 how to generate a verific
  • Firebase HTTP v1 API 不再批量发送?

    我收到了一封来自 Google 的电子邮件 通知我以下服务即将停用 在对 FCM 的单个 HTTP 请求中包含多个发送请求 称为批量发送 推荐的方法是 通过 HTTP v1 API 发送消息 该 API 已针对扇出性能进行了优化 在本页面
  • Symfony2 twig 翻译 {% trans %} 标签中的变量值

    我正在开发一个 Symfony2 项目并有一个问题 合而为一twig模板我从控制器收到一个变量 这是一个字符串 我需要翻译它 但语法 trans post name endtrans 返回错误 消息必须是 中的简单文本 那么有没有办法翻译变
  • C++0x 原子模板实现

    我知道英特尔的 TBB 中存在类似的模板 除此之外我在 google 或 Boost 库中找不到任何实现 您可以在 boost 中找到有关此功能实现的讨论 http lists boost org Archives boost 2008 1
  • 使用 htaccess 从特定文件夹中删除 SSL 集成

    我的整个网站都集成了 SSL 并放置了 htaccess 代码 以便在任何人访问我的域 URL 时重定向到 https 但我想将一个文件夹保留在 https 重定向之外 请帮我解决这个问题 下面是放置在我的根目录中的 htaccess 代码
  • 使用 pandas.merge_asof 进行全外连接

    您好 我需要将一些时间序列数据与最近的时间戳对齐 所以我认为pandas merge asof可能是一个很好的候选人 但是 它没有设置选项how outer 就像标准中一样merge method 一个例子可以是 df1 Value1 Ti