通过比较日期合并数据框,Pandas

2024-02-18

我有两个数据框,我想通过比较不同列上的日期来合并它们。

这是列出了工作单位和日期的数据框。累计工作量表示工人之前完成的工作数量。该工作单位的领导者被识别为领导者姓名。

Work_unit    Date      leader_name  Cum_work

unit1       11/12/2017      Bob           2
unit2       12/14/2018      David         1
unit3       12/13/2019      Ada           3
unit4       1/1/2019        Bob           3
unit5       12/13/2019      Ada           4

这是另一个数据框,显示每个任务的协作者。日期表示该协作者完成任务的日期。

Work_unit     Date      collaborators 

unit2       12/13/2018      Bob
unit2       12/30/2018      Ada
unit3       1/10/2019       Bob
unit3       2/3/2019        Casey
unit4       12/30/2020      Ada
unit4       12/31/2020      David

我想结合两个数据框来演示工作协作并显示协作者的资历。

例如,Bob 是工作单元 1 的领导者,但他也是单元 2 的协作者。我想通过比较日期将 Bob 的累积工作从 dataframe1(他完成的领导工作数量)映射到 dataframe2,因此 Cumworks_sofar 将单元 2 中的 Bob 为 2。

因此合并后的数据框将是

Work_unit     Date   collaborators   Cumworks_sofar

unit2       12/13/2018      Bob              2
unit2       12/30/2018      Ada              3
unit3       1/10/2019       Bob              3
unit3       2/3/2019        Casey            0
unit4       12/30/2020      Ada              4
unit4       12/31/2020      David            1

感谢您的帮助


merge_asof with backward方向,

df1.sort_values(by=['Date'], inplace=True)

output = pd.merge_asof(df2, df1, on='Date', left_by='collaborators', right_by='leader_name', direction='backward')
output.drop(['Work_unit_y', 'leader_name'], axis=1, inplace=True)
output.rename(columns={'Work_unit_x': 'Work_unit'}, inplace=True)
output
###
  Work_unit       Date collaborators  Cum_work
0     unit2 2018-12-13           Bob       2.0
1     unit2 2018-12-30           Ada       NaN
2     unit3 2019-01-10           Bob       3.0
3     unit3 2019-02-03         Casey       NaN
4     unit4 2020-12-30           Ada       4.0
5     unit4 2020-12-31         David       1.0

我认为Ada的第一张唱片应该是无唱片,因为她之前没有工作过2018-12-30 since Cum_work是一个累积指标。



如果Ada问题解决了,最后一部分就是填写NaN:

output.fillna(0, inplace=True)

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

通过比较日期合并数据框,Pandas 的相关文章

随机推荐

  • c 获取整数的第n个字节

    我知道你可以通过使用获得第一个字节 int x number 1 lt lt 8 1 or int x number 0xFF 但我不知道如何获取整数的第 n 个字节 例如 1234 为 32 位整数 00000000 00000000 0
  • git-stitch-import:如何创建一个主分支?

    我正在尝试将多个 git 存储库合并到一个新存储库中 每个旧存储库作为新存储库中的子目录 git stitch repo 似乎是我想要的工具 但是 文档不太清楚 我能够遵循它 https metacpan org pod distribut
  • this()在Java中意味着什么[重复]

    这个问题在这里已经有答案了 什么是this 在Java中是什么意思 看起来只有放置时才有效 this 在类变量区中 有人对此有想法吗 Thanks 这意味着您正在从另一个构造函数调用默认构造函数 它必须是第一个语句 如果有 则不能使用 su
  • 如何在 Android 中制作 FM 收音机应用程序 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 这只是出于好奇 有什么办法可以让我们调频广播应用程序适用于 Android 设备 我知道这是可能的 因
  • 对象默认的stringify,相当于Java的toString?

    我刚刚看了 dart 的 3 教程 创建了评级组件 我想知道在字符串化对象时是否调用相同的方法 类似于Java的toString 例如 MyClass myObject new MyClass System out println myOb
  • 如何编写正确的静态方法 - 多线程安全

    因为我认为静态方法不应该像第一个片段那样编写 还是我错了 public static class ExtensionClass private static SomeClass object1 private static StringBu
  • 使用 msiexec 和 c# 安装 msi

    在静默模式下在 C 应用程序中安装 msi 的最佳方法是什么 我想使用 msiexec 安装 msi 文件 但我不知道如何执行此操作 问题是使用 msiexec 和 qn 时 您必须在 cmd exe 进程中运行它 以 以管理员身份 启动
  • laravel 中会话超时或过期后触发函数

    我有一个关于身份验证的问题 我的身份验证控制器中有以下功能 public function signout set logged in status to zero in database l Login where user id Ses
  • 一页上有多个谷歌地图

    在一页上显示多个实体 每个实体都有一个谷歌地图 这就是我处理仅显示一个实体的地图的方式 var map var geocoder document ready function google maps event addDomListene
  • 您何时以及为何使用 Java 的供应商和消费者接口?

    作为一名学习 Java 的非 Java 程序员 我正在阅读Supplier and Consumer目前的接口 我无法理解它们的用法和含义 您何时以及为何使用这些接口 有人可以给我一个简单的外行例子吗 我发现文档示例对于我的理解来说不够简洁
  • 在未排序的列表中查找序列

    So I am given an unsorted list A a1 a2 an with n distinct elements My goal here is to find the middle index i 1 lt i lt
  • Angular:收集的元数据包含将在运行时报告的错误:不支持 Lambda

    在我的 Angular 应用程序中 我尝试使用工厂供应商 https angular io guide dependency injection providers factory providers在我的模块中 export functi
  • 如何将 rgba 转换为透明度调整的十六进制?

    我想知道如何转换rgba into hex以将可见的 rgba 颜色 包括透明度 转换为十六进制值的方式 假设我有这个 rgba 0 129 255 4 有点像 浅蓝色 我想知道是否有办法获得相同的十六进制浅蓝色 可见 颜色 所以我不想要转
  • Facebook: FB 登录时黑屏

    当我尝试通过 Facebook 登录时 我的应用程序突然发生了一件奇怪的事情 询问登录详细信息后 Facebook 连接弹出对话框将显示空白屏幕 通常情况下 我希望看到窗口关闭 然后网站本身会继续运行 但它似乎已挂起 我在用Javascri
  • 在 Jekyll 中显示文件名并突出显示 Pygments 代码

    当在已知位置突出显示标准文件时 我想将文件名放在代码块中 最好在顶部 一个假设的例子是 highlight apache show filename etc httpd conf httpd conf the file contents e
  • 使用 Laravel 和 Angular 4 问题通过 API 在数据库中保存文件

    我有 2 个问题 1 当我发送文件请求时保存附件 方法为空 2 我的程序可以将文件以二进制形式保存在数据库中吗 Laravel 迁移 class CreateAttachmentsTable extends Migration public
  • React.js 错误:服务工作人员导航预加载请求在“preloadResponse”解决之前被取消

    我的 React 应用程序 使用 Redux Saga 有问题 我收到控制台错误 The service worker navigation preload request was cancelled before preloadRespo
  • 如何在 Java 中读取格式良好的 XML,但跳过架构?

    我想读取其中包含架构声明的 XML 文件 这就是我想做的一切 阅读它 我不在乎它是否有效 但我希望它结构良好 问题是读取器尝试读取架构文件 但失败了 我什至不想尝试 我已尝试禁用验证 但它仍然坚持尝试读取架构文件 理想情况下 我想使用现有的
  • 测地线球的算法

    我必须用较小的均匀分布的球制作一个球体 我认为最佳方法是构建一个基于三角形的测地球体并使用顶点作为球的中点 但我无法编写生成顶点的算法 用 C 或伪代码回答会更好 测地线球体示例 https i stack imgur com iNQfP
  • 通过比较日期合并数据框,Pandas

    我有两个数据框 我想通过比较不同列上的日期来合并它们 这是列出了工作单位和日期的数据框 累计工作量表示工人之前完成的工作数量 该工作单位的领导者被识别为领导者姓名 Work unit Date leader name Cum work un