我正在使用 Python 熊貓,我很欣賞 Python 中的代碼。但是您可以在 Excel 或 SQL 中提出解決方案。我有兩個表 A 和 B。表 A 有兩個 ID 列,我想通過它們連接表 B。表 B 有一個 ID 列,該列對應于表 A 的一個或另一個 ID 列。這是一個示例:


這是我想要的結果表 AB:

uj5u.com熱心網友回復:
在sql:
select * from tableA a
left join tableB b
on b.ID in (a.ID1, a.ID2)
uj5u.com熱心網友回復:
您可以使用pd.merge() dropna() isna() pd.concat()
import pandas as pd
m1 = pd.merge(df_A, df_B, left_on='ID Column 1', right_on='ID Column', how='left')
m1_mismatches = m1[m1['ID Column'].isna()].dropna(axis=1)
m1_matches = m1[~m1['ID Column'].isna()]
m2 = pd.merge(m1_mismatches, df_B, left_on='ID Column 2', right_on='ID Column', how='left')
df_AB = pd.concat([m1_matches, m2]).drop(columns='ID Column').reset_index(drop=True)
print(df_AB)
這里的想法是在和之間進行初始“左連接”,然后在第一個連接 ( ) 和 中發現的不匹配之間進行第二次“左連接”。最后,我們使用來連接結果。df_Adf_Bm1_mismatchesdf_Bpd.concat
輸出:
| 標識欄 1 | 標識欄 2 | 第 1 列 | 第 2 列 | 第 3 列 | 第 4 列 | |
|---|---|---|---|---|---|---|
| 0 | [email protected] | [email protected] | 哈哈 | 9479 | 小便小便小便 | 985023.0 |
| 1 | 電子郵件@email.com | [email protected] | 布拉布拉布拉 | 123 | bla bla bla 你好 | 124323.0 |
| 2 | 你好@email.com | 再見@gmail.com | 哈利波特 | 2077 | NaN | NaN |
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/336006.html
