在多种条件下合并来自多个数据帧的数据

2024-02-03

我想合并多个数据帧,但前提是键匹配并且日期范围位于 df1 中“InitialAdmit”日期范围的 90 天内。我想保留 df1 中的所有行,并且仅合并 df2、df3 等中的其他行,只要它们与键匹配并在日期范围内即可。

注意:先合并 dfs,然后考虑日期范围条件对我来说不起作用。我第一次使用此方法,但在很多情况下合并成功,但由于日期范围超出限制,我让脚本删除该行。我需要以某种方式保留 df1 中的所有行。

Python Pandas:在多个条件下合并数据帧 https://stackoverflow.com/questions/45283438/python-pandas-merging-data-frames-on-multiple-conditions- 这个问题是相似的,但它似乎合并然后应用条件。我认为更好的方法是应用条件,然后在满足条件时合并。尽管如此,我愿意接受建议。

数据框:

a = {'Key': [100000204, 100000255, 100000271,100000286,100000628], 
 'InitialAdmit': ['2012-06-04', '2012-05-03', '2012-01-16', '2012-10-26', '2012-02-21'],
 '90DayRange': ['2012-09-02', '2012-08-01', '2012-04-15', '2013-01-24', '2012-05-21']
}
df1 = pandas.DataFrame(data=a)
df1


b = {'Key': [100000208, 100000255, 100000723,100000286,100000866], 
 'InitialAdmit': ['2012-01-22', '2012-06-03', '2012-10-26', '2012-11-26', '2012-05-11'],
}
df2 = pandas.DataFrame(data=b)
df2 

c = {'Key': [100000255, 100000255, 100000702,100000221,100000628], 
 'InitialAdmit': ['2012-06-22', '2012-10-03', '2012-10-26', '2012-11-26', '2012-04-11'],
}
df3 = pandas.DataFrame(data=c)
df3

Script:

df_NotIncludedRows = pandas.DataFrame()
df_final = pandas.DataFrame()
dfs = [df2] #I plan to add more dataframes so I'm iterating through this list of dfs 

for df in dfs: #iterate through each df in dfs
    for key in df1["Key"]: #iterate through each key found in column 'Id'
        if key in df["Key"]: # find any matching key from df1 in df2 (part of my issue exists here)
            if (df["Admit"] >= df1["InitialAdmit"]) | (df["Admit"] <= df1["90DayRange"]):
                df_final = pandas.merge(df1,df.loc[:],on='Key',how='left') # my df.loc[:] is a little off i think
            else:
                df_NotIncludedRows = df_NotIncludedRows.append(df.loc[:]) # same df.loc[:] issue i believe   
df_NotIncludedRows

我仍然推荐先合并然后过滤,这里我们使用布尔索引和combine_first

df=df1.merge(df2,on='Key')
m=(df.InitialAdmit_y>=df.InitialAdmit_x)&(df.InitialAdmit_y<=df.InitialAdmit_x)
df1.set_index('Key').combine_first(df[m].set_index('Key'))


Out[215]: 
          90DayRange InitialAdmit InitialAdmit_x InitialAdmit_y
Key                                                            
100000204 2012-09-02   2012-06-04            NaT            NaT
100000255 2012-08-01   2012-05-03     2012-05-03     2012-06-03
100000271 2012-04-15   2012-01-16            NaT            NaT
100000286 2013-01-24   2012-10-26     2012-10-26     2012-11-26
100000628 2012-05-21   2012-02-21            NaT            NaT
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在多种条件下合并来自多个数据帧的数据 的相关文章

随机推荐

  • Grunt/Bundler 不会使用指定的 sass 版本

    我们有一个带有 Grunt 和 Bundler 设置的项目 所有这些都安装没有问题 生成了 Gemfile lock 下拉了正确的 gem 并使用 npm 创建了 grunt 文件 我们开始监视该项目 它在 sass 编译上崩溃 因为它使用
  • 测试 DataFrame 中的后续值

    我有一个 DataFrame 其中一列包含正整数和负整数 对于每一行 我想查看有多少连续行 从当前行开始并包括当前行 具有负值 所以如果一个序列是2 1 3 1 1 结果将是0 2 1 0 1 我可以通过迭代所有索引来做到这一点 使用 il
  • Python:如何让我的 tkinter 应用程序正确退出?

    我需要知道如何在 Mac 上执行此操作 因为每当我尝试退出它时 我都必须强制退出它 当用户单击退出按钮时 是否有正确的方法使 Tkinter 正常退出 我知道怎么做了 我只是放了一个简单的exit 主循环之后的命令
  • 在 Win32 / COM 方法上调用 PInvoke 时,通常会出现明显的性能影响吗?

    我想知道是否有人对在托管 Net 代码的 Win32 方法上使用 DLLImport PInvoke 的负面方面有一个不错的解释或概述 我计划使用各种 Win32 方法 并希望更好地了解这样做的负面影响 Thanks Brian 根据MSD
  • 如何在 EF CF 中设置 POCO 的默认值?

    在实体框架代码优先方法中 如何为 POCO 的 EntityConfiguration 类中的属性设置默认值 public class Person public int Id get set public string Name get
  • 应用程序最小化时的 Android 活动和片段生命周期问题

    我有一个带有多项选择列表的片段 我正在尝试保存当前在列表中检查的项目的实例 并在应用程序最小化等情况下恢复它们 测试步骤 到达多选列表片段 检查一些列表项 按主页键最小化应用程序 按多任务按钮并选择我的应用程序来恢复它 以下是我正在使用的代
  • PDFBox - PageDrawer 在 PdfPagePanel 外部绘制

    我正在使用 PDFBox 在我的应用程序中显示生成的 pdf 文件 我将 PdfPagePanel 添加到 JScrollPane 中 当我缩小窗口并出现滚动条时 PageDrawer 会绘制到滚动条上 这种效果也出现在 PDFReader
  • 如何在XSLT中实现if-else语句?

    我试图在 XSLT 中实现 if else 语句 但我的代码无法解析 有人有什么想法吗
  • 显示 git diff,忽略文件权限更改?

    我跑过好几个chmod在我的实时服务器中 现在当我做一个git diff在那里 我看到很多old mode 100644 new mode 100755 我还在那里更改了一些文件 但我只是 git diff 只是为了显示文件上的更改 忽略文
  • 保留的 ASP.NET MVC 控制器名称?

    所以我花了大约一个小时来调试为什么我收到客户端 404 和服务器端System Web Http HttpResponseException on System Web Http dll System Web Http Dispatcher
  • Chromium WebView 不存在

    我正在尝试使用 Phonegap 创建一个 Hello World 应用程序 但当我调用在模拟器上运行该应用程序时 它崩溃了 我遵循了指南here http docs phonegap com en edge guide platforms
  • Scikit-learn 从分段时间序列创建标记数据集

    INTRO 我有一个 Pandas DataFrame 代表分段的不同用户 即 user1 和 user2 的时间序列 我想使用上述 DataFrame 训练 scikit learn 分类器 但我无法理解必须创建的 scikit lear
  • 生成渐变进度条

    我正在使用下面的代码在进度栏中显示渐变 那么如何创建如上图所示的渐变进度条呢 我已经尝试了很多解决方案但还没有成功
  • 这段 PHP 代码有什么作用? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 最近接管一个网站 在多个文件中发现以下代码 认为是恶意代码 关于它的作用有什么想法吗 它似乎 第一行是 POST 第二行检查 POST 是
  • 当属性丢失时,如何强制 System.Text.Json 序列化程序抛出异常?

    Json NET 行为可以通过属性定义 如果 json 负载不包含必需的属性 则使用默认值或仅抛出异常 Yet System Text Json序列化器默默地什么也不做 正在上课 public sealed class Foo Requir
  • 为列的每种不同类型提取多个相似行

    Input col1 col2 col3 apple d 10 apple d 44 apple e 55 orange d 99 orange c 33 orange d 10 banana e 55 banana d 10 所需输出 c
  • 如何在 Linux 上的 VS Code 上捕获 C 程序中的 CTRL+C?

    在 Linux 上用 VS Code 编写 C 代码 I use signal SIGINT myhandler signal SIGHUP myhandler signal SIGKILL myhandler signal SIGTERM
  • NGINX 和 Gunicorn 并行运行的目的是什么?

    许多通过 Amazon EC2 部署的 Django 应用程序都使用 HTTP 服务器 NGINX 和 Gunicorn 我想知道它们实际上是做什么的以及为什么两者并行使用 并行运行它们的目的是什么 它们不并行使用 NGINX 是一个反向代
  • 当我在 Electron 应用程序中双击打开文件时,Argv[1] 返回意外值

    我正在尝试双击打开文件 该文件是使用 electro packager 为 Mac App Store 构建的 我进行了一些设置 以便在双击文件时打开我的电子应用程序 但是双击文件的文件名不会在命令行参数中传递给应用程序 argv 0 返回
  • 在多种条件下合并来自多个数据帧的数据

    我想合并多个数据帧 但前提是键匹配并且日期范围位于 df1 中 InitialAdmit 日期范围的 90 天内 我想保留 df1 中的所有行 并且仅合并 df2 df3 等中的其他行 只要它们与键匹配并在日期范围内即可 注意 先合并 df