首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过比较日期,Pandas合并数据

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

Stack Overflow用户
提问于 2022-09-24 07:23:55
回答 1查看 56关注 0票数 2

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

这是包含工作单元和日期的数据格式。“加功”表示工人以前完成的工作数量。这个工作单位的领导被识别为领导者的名字。

代码语言:javascript
复制
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

这是另一个显示每个任务的协作者的dataframe。日期指示此协作者处理此任务的日期。

代码语言:javascript
复制
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是workunit 1的领导者,但他也是单元2中的协作者。我想通过比较日期将Bob的累积工作从dataframe1 (他完成的领导工作的数量)映射到dataframe2,所以Cumworks_sofar对于unit2中的鲍勃来说是2。

因此,合并的Dataframe将是

代码语言:javascript
复制
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

谢谢你的帮助

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-24 08:15:42

merge_asof反向方向,

代码语言:javascript
复制
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之前没有工作,因为Cum_work是一个累积的度量。

如果Ada问题得到解决,最后一部分是填充NaN

output.fillna(0, inplace=True)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73835440

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档