Python 熊猫合并两个数据帧而不复制列
我的问题与类似,但我无法找到以下具体示例的解决方案 我有日期框df:Python 熊猫合并两个数据帧而不复制列,python,pandas,Python,Pandas,我的问题与类似,但我无法找到以下具体示例的解决方案 我有日期框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@
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
虽然我可以只删除名为mapped_name的列,但是mapped_name可能是“Customer”,在这种情况下,我不想同时删除这两个Customer列
有什么想法吗?我想您可以将
电子邮件中的第一列重命名为Customer
,how='interner'
,因为默认值:
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
甚至可以使用df.drop(mapped_name,axis=1,inplace=True)删除不需要的列