[英]Compare two dataframes with different format column values
我有兩個數據框
df1:
戶口號碼 | 姓名 | a/ctype |
---|---|---|
11.22.21 | 亨利 | 檢查 |
11.22.22 | 山姆 | 保存。 |
11.22.23 | 約翰 | 檢查 |
df2:
戶口號碼 | 姓名 | a/ctype |
---|---|---|
11-22-21 | 亨利 | 檢查 |
11-22-23 | 約翰 | 檢查 |
11-22-24 | 麗塔 | 檢查 |
輸出:df3:
A/cNO_df1 | A/cNO_df2 | 結果。 | 名稱_df1 | 名稱_df2 | 結果 | a/ctype_df1 | a/ctype_df2 | 結果。 |
---|---|---|---|---|---|---|---|---|
11.22.21 | 11-22-21 | 匹配 | 亨利 | 亨利 | 匹配。 | 檢查 | 檢查 | 匹配。 |
11.22.22 | Notindf2 | 山姆。 | Notindf2 | 檢查 | Notindf2 | |||
11.22.23 | 11-22-23 | 匹配 | 約翰。 | 約翰 | 匹配。 | 檢查 | 檢查 | 匹配。 |
. | 11-22-24 | Notindf1 | . | 麗塔 | Notindf1 | 檢查 | Notindf2 |
我嘗試刪除帳戶的非數字字符以使用以下方法比較兩個數據集: df1['AccountNo'] = df1.AccountNo.replace(regex=[r'\D+', value='') df2['AccountNo'] = df2.AccountNo.replace(正則表達式=[r'\D+', value='')
然后連接兩個數據幀。 但是,當我刪除字符時,我無法以相同的格式打印它,並且對於不在 df1 中的 ac 和不在 df2 中的 ac 我無法連接它。 我嘗試使用 numpy where 來比較和連接。
有沒有辦法可以做到?
您可以與外部系列合並為鍵:
df1.merge(df2, left_on='AccountNo', right_on=df2['AccountNo'].str.replace('-', '.'),
suffixes=('_df1', '_df2'), how='outer')
輸出:
AccountNo AccountNo_df1 name_df1 a/ctype_df1 AccountNo_df2 name_df2 a/ctype_df2
0 11.22.21 11.22.21 Henry checking 11-22-21 Henry checking
1 11.22.22 11.22.22 Sam Saving NaN NaN NaN
2 11.22.23 11.22.23 John Checking 11-22-23 John Checking
3 11.22.24 NaN NaN NaN 11-22-24 Rita Checking
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.