簡體   English   中英

如果只有第一個唯一值匹配,Pandas會比較兩列並復制另一列的值

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

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