簡體   English   中英

熊貓合並兩個數據框而不重復列

[英]Pandas merge two dataframes without duplicating column

我的問題類似於“ Pandas合並-如何避免重復的列”,但是我找不到下面特定示例的解決方案。

我有DateFrame df:

Customer    Address
J. Smith    10 Sunny Rd Timbuktu

和數據框電子郵件:

Name        Email
J. Smith    j.smith@myemail.com

我想合並兩個數據框以產生:

Customer    Address                 Email
J. Smith    10 Sunny Rd Timbuktu    j.smith@myemail.com

我正在使用以下代碼:

data_names = {'Name':data_col[1], ...}
mapped_name = data_names['Name']
df = df.merge(emails, how='inner', left_on='Customer', right_on=mapped_name)

結果是:

Customer    Address                 Email                 Name
J. Smith    10 Sunny Rd Timbuktu    j.smith@myemail.com   J. Smith

雖然我只可以刪除名為被映射的名稱的列,但是有可能被映射的名稱可能是“客戶”,在這種情況下,我不想刪除兩個客戶列。

有任何想法嗎?

我認為您可以將email數據框中的第一列重命名為Customer ,可以省略how='inner'因為默認值是:

emails.columns = ['Customer'] + emails.columns[1:].tolist()

df = df.merge(emails, on='Customer')
print (df)
   Customer               Address                Email
0  J. Smith  10 Sunny Rd Timbuktu  j.smith@myemail.com

和另一個答案類似的解決方案-可以重命名[0]選擇的第一列:

df = df.merge(emails.rename(columns={emails.columns[0]:'Customer'}), on='Customer')
print (df)
   Customer               Address                Email
0  J. Smith  10 Sunny Rd Timbuktu  j.smith@myemail.com

您可以將您的電子郵件名稱列重命名為“客戶”,然后合並。 這樣,您完全不必擔心刪除列。

df.merge(emails.rename(columns={mapped_name:'Customer'}), how='inner', on='Customer')
Out[53]: 
   Customer               Address                Email
0  J. Smith  10 Sunny Rd Timbuktu  j.smith@myemail.com

暫無
暫無

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

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