如何解决比较两个数据框并输出新列
我是 Python 初学者。我有两个数据帧,每个数据帧有 5 列,但每个数据帧中只有前两列有匹配的数据。每个数据帧都有不同数量的记录。我想将 df1 中的 A 列与 df2 中的 A 列进行比较,如果它们匹配,则输出列D (ownerEmail) 来自 df2。如果 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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。