开发者社区> 问答> 正文

联合两个pandas DataFrames

假设我有两个数据框:

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)
我想不出/找到一种方法可以控制哪个元素去哪里。如何添加额外的列?

展开
收起
一码平川MACHEL 2019-01-23 14:34:19 1689 0
1 条回答
写回答
取消 提交回答
  • 合并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

    2019-07-17 23:26:37
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Adopting Dataframes and Parque 立即下载
即学即用的Pandas入门与时间序列分析 立即下载
中文:即学即用的Pandas入门与时间序列分析 立即下载