熊猫 groupby merge_asof

2023-12-06

我有两个数据框left and right我想根据分组进行合并df1.

df1:

ID              cumul_growth_perc
Nioz-TC-09-A1R  0
Nioz-TC-09-A1R  2.99881756777804
Nioz-TC-09-A1R  90.1974001442841
Nioz-TC-09-A1R  92.7010664317585
Nioz-TC-09-A1R  95.4937993952028
Nioz-TC-09-A1R  97.7300790074048
Nioz-TC-09-A1R  100
Nioz-TC-09-A2R  0
Nioz-TC-09-A2R  2.1989297984251
Nioz-TC-09-A2R  4.25561486642024
Nioz-TC-09-A2R  82.2910739802899
Nioz-TC-09-A2R  93.276493352502
Nioz-TC-09-A2R  95.5072381936874
Nioz-TC-09-A2R  97.5983443147713
Nioz-TC-09-A2R  100
df2:

day cumul_growth_perc
32  0.233297611918821
33  0.466595223837642
34  0.699892835756464
35  0.933190447675285
36  1.16648805959411
37  1.39978567151293
46  3.54027808151455
47  3.78173847397982
48  4.02319886644508
335 92.4313101347799
336 92.6888317371006
337 92.9463533394213
338 93.203874941742
339 93.4613965440627
340 93.7189181463834
361 99.0468989121531
362 99.2851741841149
363 99.5234494560766
364 99.7617247280384
365 100

cumul_growth_perc范围为 0-100,但为了演示而在此处进行了缩短。我想合并此列上的两个数据框,并且值与中的值不完全匹配df1 and df2。 此外,df1应按以下方式分组ID执行匹配之前的列。据我了解,熊猫merge_asof具体有by=关键字来执行此操作。但由于我没有ID列于df2,操作失败。df2对于所有组都是一样的df1.

这是我使用的:pd.merge_asof(df1, df2, on='cumul_growth_perc', left_by='ID', direction='nearest')

正如预期的那样,它告诉我right_by is missing。我怎样才能仍然执行“分组合并”?我可以延长df2通过为每个唯一值附加相同的值df1.ID,但这感觉很怪异。

EDIT:

预期输出:

                ID  cumul_growth_perc  day
0   Nioz-TC-09-A1R           0.000000   32
1   Nioz-TC-09-A1R           2.998818   46
2   Nioz-TC-09-A1R          90.197400  335
3   Nioz-TC-09-A1R          92.701066  336
4   Nioz-TC-09-A1R          95.493799  340
5   Nioz-TC-09-A1R          97.730079  361
6   Nioz-TC-09-A1R         100.000000  365
7   Nioz-TC-09-A2R           0.000000   32
8   Nioz-TC-09-A2R           2.198930   37
9   Nioz-TC-09-A2R           4.255615   48
10  Nioz-TC-09-A2R          82.291074  335
11  Nioz-TC-09-A2R          93.276493  338
12  Nioz-TC-09-A2R          95.507238  340
13  Nioz-TC-09-A2R          97.598344  361
14  Nioz-TC-09-A2R         100.000000  365

意思是我想分组df1.ID在执行合并之前。我通过“重复”让它发挥作用df2加上一个额外的ID每个 ID 的列df1:

for i, name in enumerate(df1.Shell_ID.unique()):
    if i==0:
        df2_long = df2.copy()
        df2_long['ID'] = name
    else:
        temp = df2.copy()
        temp['ID'] = name
        df2_long = df2_long.append(temp)

然后两个数据框都按cumul_growth_perc我将它们与pd.merge_asof(df1, df2_long, on='cumul_growth_perc', by='ID', direction='nearest')

但感觉有一个更简单的解决方案。


Using DataFrame.sort_values对数据框进行排序df1 and df2 on cumul_growth_perc然后执行merge_asof在排序后的数据帧上:

d1 = df1.sort_values('cumul_growth_perc')
d2 = df2.sort_values('cumul_growth_perc')

df = pd.merge_asof(d1, d2, on='cumul_growth_perc', direction='nearest').sort_values('ID')

Result:

                ID  cumul_growth_perc  day
0   Nioz-TC-09-A1R           0.000000   32
1   Nioz-TC-09-A1R           2.998818   46
2   Nioz-TC-09-A1R          90.197400  335
3   Nioz-TC-09-A1R          92.701066  336
4   Nioz-TC-09-A1R          95.493799  340
5   Nioz-TC-09-A1R          97.730079  361
6   Nioz-TC-09-A1R         100.000000  365
7   Nioz-TC-09-A2R           0.000000   32
8   Nioz-TC-09-A2R           2.198930   37
9   Nioz-TC-09-A2R           4.255615   48
10  Nioz-TC-09-A2R          82.291074  335
11  Nioz-TC-09-A2R          93.276493  338
12  Nioz-TC-09-A2R          95.507238  340
13  Nioz-TC-09-A2R          97.598344  361
14  Nioz-TC-09-A2R         100.000000  365
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

熊猫 groupby merge_asof 的相关文章

  • Django 1.6:清除一张表中的数据

    我有一个名为 UGC 的表 想要清除该表中的所有数据 我不想重置整个应用程序 这也会删除所有其他模型中的所有数据 是否可以只清除一个模型 我还为我的应用程序配置了 South 如果这有帮助的话 你可以使用原始 SQL https docs
  • Python:访问另一个类中一个类的属性和方法

    假设我有两个 A 类和 B 类 Class A A s attributes and methods here Class B B s attributes and methods here 现在我可以评估 B 类对象中 A 的属性 如下所
  • 获取父类名? [复制]

    这个问题在这里已经有答案了 class A object def get class self return self class class B A def init self A init self b B print b get cl
  • 为什么Flask后台线程获取错误的数据库信息?

    为了将实时数据库信息推送到客户端 我在服务器端使用flask socketio 通过使用websocket将所有实时数据库信息推送到客户端 我的视图文件有一个片段 from models import Host from flask soc
  • 使用 Python 访问内存映射文件

    我希望利用激战 2 中的内存映射文件 该文件旨在链接到 Mumble 以获得位置音频 该文件包含有关字符坐标的信息和其他有用的信息 我已经能够使用此脚本访问坐标信息 import mmap import struct last while
  • 并行执行按位运算的代码

    我有这段代码 通过将该 AU 矩阵的每个字节 8 个元素打包到 A 中来减少内存消耗 从而使 100k 200k 矩阵占用更少的空间 正如您所期望的 这段代码需要永远运行 我也计划将行数增加到 200k 我正在一个非常强大的实例 CPU 和
  • 如何在 dash/plotly 中使用 iframe? (Python/HTML)

    我正在创建一个仪表板 我想使用这个交互式地图 网站链接 https www ons gov uk peoplepopulationandcommunity healthandsocialcare causesofdeath articles
  • 为什么我的字符串中出现不需要的换行符?

    这应该很简单 这很愚蠢 但我无法让它发挥作用 我有一个在读取文件时定义的标头 if gene env in line or gene HIV2gp7 in line header line 现在这个标题看起来像 gt lcl NC 0018
  • 如何为 PyYAML 编写代表程序?

    我想要一个自定义函数来序列化任意 python 对象 就像 json dump 函数有一个名为 default 的可选参数 如果对象不是 json 可序列化的 它应该是 json 转储器将调用的函数 我只是想从 json 包中执行相当于此操
  • 将 postgres 连接到 django 时遇到问题

    以下文档来自Django Postgres 文档 https docs djangoproject com en 4 1 ref databases postgresql notes我添加到我的settings py 在我设置的设置中 DA
  • [Python]比较两个 zip 文件的函数,一个位于 FTP 目录中,另一个位于我的本地计算机上

    我在创建比较两个 zip 文件的函数时遇到问题 如果它们相同 而不仅仅是名称相同 这是我的代码示例 def validate zip files self host 192 168 0 1 port 2323 username 123 pa
  • 如何向 Jupyter (ipython) 笔记本自动添加扩展?

    我已经安装了扩展 calico document tools 我可以使用以下命令从 Jupyter 笔记本中加载它 javascript IPython load extensions calico document tools 如何为每个
  • 如何在我的 GUI 上绘图

    我正在设计一个 GUIPyQt当我单击一个按钮来绘制我创建的函数的数据图时 我需要显示一个 matplotlib pylab 窗口 它就像 Matlab 中使用的运行时 每次按下该按钮时 我都想将 matplotlib pylab 窗口保留
  • 如何在Python中将N毫秒添加到日期时间

    我正在设置一个日期时间变量 fulldate datetime datetime strptime date time Y m d H M S f 其中日期和时间是适合日期时间性质的字符串 如何将此日期时间增加 N 毫秒 Use timed
  • Python httplib 和 POST

    我目前正在使用别人编写的一段代码 它用httplib向服务器发出请求 它以正确的格式提供所有数据 例如消息正文 标头值等 问题是 每次尝试发送 POST 请求时 数据都在那里 我可以在客户端看到它 但没有任何内容到达服务器 我已经阅读了库规
  • Spacy-nightly (spacy 2.0) 问题“thinc.extra.MaxViolation 大小错误”

    显然成功安装了 spacy nightly spacy nightly 2 0 0a14 和英语模型 en core web sm 后 我在尝试运行它时仍然收到错误消息 import spacy nlp spacy load en core
  • 如何让 Python 生成器返回 None 而不是 StopIteration?

    我使用生成器在列表中执行搜索 如下简单示例 gt gt gt a 1 2 3 4 gt gt gt i for i v in enumerate a if v 4 next 3 只是为了稍微说明一下示例 与上面的列表相比 我使用的列表要长得
  • tkinter 库 treectrl 转换为 exe 安装程序时出现 cx_freeze 错误

    我使用的是 python 版本 3 7 我使用了这个名为 treectrl 的外部库 当我运行 py 文件时它工作得很好 但是当我使用 cx freeze 转换为 exe 文件时 它给了我错误 NomodulleFound 名为 tkint
  • 为什么变量 1 += 变量 2 比变量 1 = 变量 1 + 变量 2 快得多?

    我继承了一些 Python 代码 用于创建巨大的表 最多 19 列宽 5000 行 花了九秒用于在屏幕上绘制表格 我注意到每一行都是使用以下代码添加的 sTable sTable n GetRow where sTable是一个字符串 我将
  • 合并共享属性的节点

    EDITED 我真的需要 Networkx graph 专家的帮助 假设我有以下数据框 我想将这些数据框转换为图表 然后我想根据描述和优先级属性将两个图映射到相应的节点 df1 From description To priority 10

随机推荐

  • 如何从一个文件中读取随机行?

    有内置方法可以做到这一点吗 如果不是 我怎样才能在不花费太多开销的情况下做到这一点 不是内置的 而是算法R 3 4 2 Waterman 的 Reservoir Algorithm 来自 Knuth 的 计算机编程的艺术 很好 非常简化的版
  • 如何从父子表中获取结果

    Work on SQL服务器 我的表结构如下 CREATE TABLE dbo AgentInfo AgentID int NOT NULL ParentID int NULL CONSTRAINT PK AgentInfo PRIMARY
  • 运行命令、流式传输 stdout/stderr 并捕获结果

    我正在尝试使用std process Command运行命令并流式传输其 stdout 和 stderr 同时捕获 stdout stderr 的副本 我发现我可以使用spawn 此代码将捕获输出 但不会在发生时将其流式传输到 stdout
  • 如何修复“没有名为‘app_one’的模块”

    我有一个具有以下结构的 Python 包 gt python package package root directory gt app one subpackage directory gt init py gt views py gt
  • Adobe Air:在不同应用程序之间更改焦点时滚动条会抛出错误

    TypeError Error 1009 Cannot access a property or method of a null object reference at spark components Scroller focusInH
  • 如何平滑 CamShift 中的跟踪

    我正在使用 OpenCV 库函数进行手头跟踪项目 通过使用Camshift 我可以跟踪我的手 但它不稳定 即使我使我的手稳定 跟踪也几乎没有移动 所以我无法在正确的位置执行鼠标单击操作 有人请帮我解决这个问题 void TrackingOb
  • 复制时的 PouchDB/CouchDB 序列计数器

    I am live将新创建的 pouchdb 3 3 1 同步到已建立的 iris couchdb 初始复制成功发生 pause事件被触发 If I do info 在本地 我得到的 update seq 为362 如果我做info 在遥控
  • 如何将c++与字边界匹配

    我想将单词 c 与 Python 3 中的单词边界匹配 但我的猜测是 b 也会在加号上触发 为了清楚起见 我已简化为以下测试用例 bc b 我希望我可以保留单词边界 但以某种方式更改其设置 原因是我想将正则表达式放在 TfidfVector
  • 点语法和方括号语法有什么区别?

    我正在经历一些 Objective C 的演练 其中很多地方都让我大吃一惊 我很想把他们打倒 消息发送和方法调用有本质区别吗 Objective C 让我可以同时完成这两件事 object message产生相同的结果 object mes
  • 如何使用 MediaCodec、MediaExtractor 或 MediaMetadataRetriever 确定视频文件的帧速率?

    如何提取录制视频文件的帧速率 我知道有 MediaFormat KEY FRAME RATE 并且我可以通过 MediaExtractor 访问 MediaFormat 对象 但是 KEY FRAME RATE 仅适用于编码器 相反 我想找
  • 将自定义按钮与 Inno Setup 取消按钮对齐

    我在设置与顶部尺寸相同的按钮时遇到问题Cancel我使用时按钮WizardSizePercent 150 in the Setup部分 这是我的代码 AboutButton TNewButton Create WizardForm Abou
  • 在不同情况下与其他单位相比,百分比的真正作用如何

    所以基本上我最近一直在尝试 CSS 并且发现了一些对我来说似乎很新的东西 在设置元素的填充时 我通常使用 em 或 px 等单位 但这次我尝试使用百分比 令我惊讶的是它的工作方式与其他单位非常不同 所以我设置了三种不同的情况 body ma
  • 如何在 Python 中声明数组并将其添加到数组中

    我正在尝试将项目添加到Python 中的数组中 I run array 然后 我尝试通过执行以下操作向该数组添加一些内容 array append valueToBeInserted 似乎没有一个 append方法用于此 如何将项目添加到数
  • 如何以编程方式确定“写入”系统调用对特定文件是否是原子的?

    在某些情况下 编码器不能依赖系统调用是原子的 例如如果文件位于 NFS 文件系统上 参见NFS 概述 常见问题解答和 HOWTO 文档 但大多数数据库工作最终都需要原子系统调用 参见数据库系统的原子性 是否有一种标准 且独立于操作系统 方法
  • 使用 Blob 在 SQLite 中存储字节数组

    对于我的应用程序 我尝试在 SQLite 应用程序中存储字节数组 我以这种方式填充 SQLite 数据库 public bool InsertMessage create string SQl and fill it with the SQ
  • c# foreach(对象中的属性)...有没有一种简单的方法可以做到这一点?

    我有一个包含多个属性的类 如果有任何区别 所有属性都是字符串 我还有一个列表 其中包含该类的许多不同实例 在为我的类创建一些单元测试时 我决定要循环遍历列表中的每个对象 然后循环遍历该对象的每个属性 我以为这样做会很简单 foreach O
  • 如果使用 jquery 选择下拉项,则显示表单字段

    我正在尝试创建一个下拉字段 如果选择 其他 项目 则会出现 请指定 文本框 下面的代码仅适用于一个下拉选择字段 但是一旦我添加第二个选择字段 它就不再起作用 这是我所拥有的似乎不起作用的内容 CSS techother display no
  • 将多行合并为一个 MySQL Join

    我想不出更好的方法来问这个问题 但这里是 我有 2 张桌子 第一个是标签打印作业的项目表 我们将称之为pj items这些列很简单 job id part num and qty 第二个表是名为的饰面列表PartFinishes在只有 2
  • EJB3 & JAAS 主题/主体如何从 servlet 容器传播到 EJB 层?

    我试图了解 JAAS 主体如何从 Web 层传播到业务 EJB 层 我读过如果角色 领域配置在登录配置 安全上下文 of web xml那么 servlet 容器也会透明地将经过身份验证的主体传递到 EJB 层 两个问题1 首先也是更重要的
  • 熊猫 groupby merge_asof

    我有两个数据框left and right我想根据分组进行合并df1 df1 ID cumul growth perc Nioz TC 09 A1R 0 Nioz TC 09 A1R 2 99881756777804 Nioz TC 09