我试图合并两个或更多的数据池使用熊猫: DF1:
Name E-mail Phone Number
Trent trent@example.com 12341234
Barry barry@example.com 12345678
Jared jared@example.com 56781234
DF2:
Name E-mail Age
Trent trent@example.com 24
Barry barry@example.com 18
Jared jared@example.com 31
代码:
df1 = pd.read_excel("Book1.xlsx")
df2 = pd.read_excel("Book2.xlsx")
files = [df1,df2]
df_all = reduce(lambda left,right: pd.merge(left, right, on='Name'), files)
df_all = df_all.drop_duplicates(subset='Name', keep='first')
df_all = df_all.fillna(0)
现在输出是:
Name E-mail_x Age E-mail_y Phone Number
Trent trent@example.com 24 trent@example.com 12341234
Barry barry@example.com 18 barry@example.com 12345678
Jared jared@example.com 31 jared@example.com 56781234
是否要删除“_x”和“_y”并使它们成为一个列 预期的输出:
Name E-mail Age Phone Number
Trent trent@example.com 24 12341234
Barry barry@example.com 18 12345678
Jared jared@example.com 31 56781234
编辑:列名[电子邮件,年龄,电话号码]不是固定的,它们可以改变,所以列名在大多数情况下是未知的 问题来源StackOverflow 地址:/questions/59379637/python-pandas-merge-dataframes-without-duplicating-columns
供参考,你不需要减少功能,你可以简单地使用:
df_all = df1.merge(df2)
它是复制列,因为你是合并'名称'。如果所有列都相同,可以去掉on='Name'参数,它将合并所有公共列,而不是复制它们。 或者,你可以只合并df2中不重复的列:
df_all = df1.merge(df2[['Name','Age']])
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。