我有兩個資料框,我想通過比較不同列上的日期來合并它們。
這是列出作業單位和日期的資料框。Cum work 表示工人之前完成的作業數量。該作業單元的領導者被標識為領導者名稱。
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
謝謝您的幫助
uj5u.com熱心網友回復:
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://www.uj5u.com/qukuanlian/510320.html
標籤:Python熊猫日期合并
