我有两个数据框,我想通过比较不同列上的日期来合并它们。
这是列出了工作单位和日期的数据框。累计工作量表示工人之前完成的工作数量。该工作单位的领导者被识别为领导者姓名。
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(使用前将#替换为@)