比较两个数据帧并输出新列

Compare two dataframes and output new column

我是 Python 的初学者。我有两个数据框,每个数据框有 5 列,但每个数据框只有前两列有匹配数据。每个数据框都有不同数量的记录。我想比较 df1 中的 A 列与 df2[ 中的 A 如果它们匹配,则从 df2 输出列 D (ownerEmail)。如果 A 列不匹配,D 列应为空。

df1

subscriptionId | displayName | state   | authorization | tenantId
12345          | DEV_SPS     | Enabled | RoleBased     | 938c49a8
67890          | PROD_LINUX  | Enabled | RoleBased     | 0a9cb9ee
11900          | TST_WIN     | Enabled | RoleBased     | e1513511

df2

subscriptionId | SubName    | Connected | ownerEmail         | organization
12345          | DEV_SPS    | Enabled   | john.doe@gmail.com | Marketing
67890          | PROD_LINUX | Enabled   | alex.bre@gmail.com | Sales

期望输出

subscriptionId | displayName | state   | authorization | tenantId | ownerEmail       
123456         | DEV_SPS     | Enabled | RoleBased     | 938c49a8 | john.doe@gmail.com
67890          | PROD_LINUX  | Enabled | RoleBased     | 0a9cb9ee | alex.bre@gmail.com
11900          | TST_WIN     | Enabled | RoleBased     | e1513511 | null

我试过类似的方法,但没有用。

df1['ownerEmail'] = np.where(df1['subscriptionId'] == df2['subscriptionId'], ['ownerEmail'], "")
print(df1)

如有任何帮助,我们将不胜感激。

谢谢。

subscriptionId 列合并您的数据框并保留来自 df1 (how='left') 的所有记录:

>>> pd.merge(df1.astype({'subscriptionId': str}),
             df2[['subscriptionId', 'ownerEmail']].astype({'subscriptionId': str}),
             on='subscriptionId', how='left')

   subscriptionId displayName    state authorization  tenantId          ownerEmail
0           12345     DEV_SPS  Enabled     RoleBased  938c49a8  john.doe@gmail.com
1           67890  PROD_LINUX  Enabled     RoleBased  0a9cb9ee  alex.bre@gmail.com
2           11900     TST_WIN  Enabled     RoleBased  e1513511                 NaN