开发者社区> 问答> 正文

Python熊猫合并数据流而不需要复制列

我试图合并两个或更多的数据池使用熊猫: 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

展开
收起
kun坤 2019-12-29 21:55:21 698 0
1 条回答
写回答
取消 提交回答
  • 供参考,你不需要减少功能,你可以简单地使用:

    df_all = df1.merge(df2)
    

    它是复制列,因为你是合并'名称'。如果所有列都相同,可以去掉on='Name'参数,它将合并所有公共列,而不是复制它们。 或者,你可以只合并df2中不重复的列:

    df_all = df1.merge(df2[['Name','Age']])
    
    2019-12-29 21:55:28
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
From Python Scikit-Learn to Sc 立即下载
Data Pre-Processing in Python: 立即下载
双剑合璧-Python和大数据计算平台的结合 立即下载