![](/img/trans.png)
[英]Pandas compare two columns of different dataframes and copy value of a third column if there is a match
[英]Pandas compare two columns and copy value of another column if there is a match only for first unique value
我有兩個不同的數據幀,我想比較兩列。 如果第一個數據幀的值出現在第二個數據幀的列中的任何位置,我想復制匹配值旁邊的值並將其復制到第一個數據幀中的新列。
數據框看起來像這樣:
DF1
╔═══════════════════╗
║ Email ║
╠═══════════════════╣
║ Johndoe@gmail.com ║
║ janedoe@gmail.com ║
║ foo@gmail.com ║
║ foobar@gmail.com ║
║ bar@gmail.com ║
╚═══════════════════╝
DF2
╔════════════════════╦═════════════╗
║ Email ║ Phone ║
╠════════════════════╬═════════════╣
║ Johndoe@gmail.com ║ 111-111-111 ║
║ Johndoe@gmail.com ║ 111-111-111 ║
║ Johndoe@gmail.com ║ 111-111-111 ║
║ Jakedoe@gmail.com ║ 123-123-123 ║
║ jamesdoe@gmail.com ║ 321-321-321 ║
║ janedoe@gmail.com ║ 222-222-222 ║
║ janedoe@gmail.com ║ 222-222-222 ║
║ foo@gmail.com ║ 333-333-333 ║
║ foobar@gmail.com ║ 444-444-444 ║
║ foobar@gmail.com ║ 444-444-444 ║
║ bar@gmail.com ║ 555-555-555 ║
╚════════════════════╩═════════════╝
輸出應如下所示:
╔═══════════════════╦═════════════╗
║ email ║ phone ║
╠═══════════════════╬═════════════╣
║ Johndoe@gmail.com ║ 111-111-111 ║
║ janedoe@gmail.com ║ 222-222-222 ║
║ foo@gmail.com ║ 333-333-333 ║
║ foobar@gmail.com ║ 444-444-444 ║
║ bar@gmail.com ║ 555-555-555 ║
╚═══════════════════╩═════════════╝
我已經嘗試在DF1中循環遍歷列並將每個值與DF2中的相應列進行比較,但它也返回重復項。
用熊貓實現這一目標的好方法是什么?
謝謝!
您可以使用.merge()
然后使用.drop_duplicates()
new_df = df1.merge(df2, on='Email', how='left').drop_duplicates()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.