簡體   English   中英

比較具有不同格式列值的兩個數據框

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM