比较两个数据帧并输出新列
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
我是 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