![](/img/trans.png)
[英]multiply row from one dataframe with matching column in another dataframe and add
[英]How to iterate each row and find the next matching column value from a specific column from one dataframe and comparing it to another dataframe?
我有兩個數據框:
DF1:A組
employee_id | key
100 101001
101 020208
102 101002
103 020208
104 020208
... ...
300 010506
DF2:B組
employee_id | key
110 101001
111 020208
112 020105
113 020208
114 020208
... ...
600 051007
比較兩個數據框中每一行的key
。 對於每個匹配的員工,使用DF1.employee_id, DF1.key, DF2.employee_id
創建一個新的 dataframe 並從 DF2 中刪除匹配的人。
我想一次迭代 DF1 中的每個員工,並在 DF2 中找到一條行進記錄,一旦匹配就刪除 DF2 中的該記錄。 您的目標是不要為 DF1 中的每個匹配員工提供來自 DF2 的重復匹配員工。 如何迭代這個過程?
clean = df_1.merge(df_2, on=['key'], how='left')
上面的腳本會給我重復的記錄。 我希望新的 dataframe 看起來像這樣:
新 Dataframe(樣本):
employee_id_df1 | key | employee_id_df2
100 101001 110
101 020208 111
103 020208 113
104 020208 114
目標是進行一對一的比賽。
您可以嘗試創建一個在合並中使用的臨時列:
df1["tmp"] = df1.groupby("key").cumcount()
df2["tmp"] = df2.groupby("key").cumcount()
df_out = pd.merge(df1, df2, on=["key", "tmp"], how="inner")
df_out = df_out.rename(
columns={"employee_id_x": "employee_id_df1", "employee_id_y": "employee_id_df2"}
).drop(columns="tmp")
print(df_out)
印刷:
employee_id_df1 key employee_id_df2
0 100 101001 110
1 101 20208 111
2 102 20105 112
3 103 20208 113
4 104 20208 114
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.