我有两个数据格式,我想通过比较不同列上的日期来合并它们。
这是包含工作单元和日期的数据格式。“加功”表示工人以前完成的工作数量。这个工作单位的领导被识别为领导者的名字。
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。日期指示此协作者处理此任务的日期。
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将是
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谢谢你的帮助
发布于 2022-09-24 08:15:42
merge_asof与反向方向,
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)
https://stackoverflow.com/questions/73835440
复制相似问题