簡體   English   中英

Pandas 比較不同數據幀的兩列,如果匹配,則復制第三列的值

[英]Pandas compare two columns of different dataframes and copy value of a third column if there is a match

我有兩個不同的數據框,它們是從不同的.xlsx文檔中導出的

df1 包含標題:聯系人姓名、請求 ID、聯系人電子郵件。
df2 包含標頭:請求 ID 和我需要的其他一些標頭。

我想檢查 df2['Request ID'] 的值是否與每個 df1 ['Request ID] 列匹配,並將該匹配項的 df1['Contact E-mail'] 值復制到 df2 中的新列.

我嘗試了很多事情但沒有成功,我嘗試的最后一件事是:

 if df1.loc['Request ID'] == df2.loc['Request ID']:
        df2['Email'] = df1['Contact Email']
 else:
        df2['Email'] = ""

但是我收到錯誤:

KeyError:“ [Int64Index(
[2014164503、2014151100、2014149017、2014162644、2014164489、
2014120882、2014159262、2013993561、2014162450、2014151098、
2014150239、2014162949、2014151485、2014162448、2014163094、
2014162592、2014158897、2014151097、2014164495、2014159459、
2014036452、2014164484、2014154555、2014154556、2014146835、
2014149163、2014158899、2014153930、2014163579、2014036453、
2014142169、2014145026、2014151724、2014155704、2014152046、
2014036447、2014164490、2014163503、2014160983、2014105630、
2014163612, 2014146834, 2014027641, 2014164454],
dtype='int64')] 在 [index]"

您要實現的目標聽起來像是典型的sql join操作。 這可以翻譯成Pandas如下所示:

df1 = df1.rename(columns={"Contact Email": "Email"})
res = df1.merge(df2, on=["Request ID"], how="right")

Pandas 合並文檔

如果您分享您的輸入和預期輸出的示例,我會很棒。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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