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