开发者社区> 问答> 正文

联合两个pandas DataFrames

一码平川MACHEL 2019-01-23 14:34:19 398

假设我有两个数据框:

DF1:

A
0 a
1 b
DF2:

A
0 a
1 c
我想要的结果是联合两帧的与额外的列表示该行属于源数据帧。如果有重复项,应删除重复项,相应的额外列应显示两个来源:

A B
0 a df1, df2
1 b df1
2 c df2
我可以得到连接数据框(df3)没有重复,如下所示:

import pandas as pd
df3=pd.concat([df1,df2],ignore_index=True).drop_duplicates().reset_index(drop=True)
我想不出/找到一种方法可以控制哪个元素去哪里。如何添加额外的列?

Python
分享到
取消 提交回答
全部回答(1)
  • 一码平川MACHEL
    2019-07-17 23:26:37

    合并indicator参数,并重新映射结果:

    m = {'left_only': 'df1', 'right_only': 'df2', 'both': 'df1, df2'}

    result = df1.merge(df2, on=['A'], how='outer', indicator='B')
    result['B'] = result['B'].map(m)

    result
    A B
    0 a df1, df2
    1 b df1
    2 c df2

    0 0

集结各类场景实战经验,助你开发运维畅行无忧

推荐文章
相似问题