python - 两个 Pandas 数据框的联合

标签 python pandas dataframe merge concatenation

假设我有两个数据框:

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)

我想不出/找不到一种方法来控制元素的位置。如何添加额外的列?

非常感谢您的任何提示。

最佳答案

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

关于python - 两个 Pandas 数据框的联合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54315222/

相关文章:

python - 合并数据帧而不复制 python pandas 中的行

python - 时间序列数据的异常值检测

python - 计算 pandas 数据框中的所有类别并添加它们的值

python - 如何将字符串类型的列转换为pyspark数据框中的int形式?

pandas - 有没有 Pandas 方法可以在 .to_csv() 方法生成的 csv 中的每行末尾添加逗号?

Python - 属性错误 : 'module' object has no attribute 'QueryFrame'

Python 性能 : why Counter(r) is NOT 100 times faster than {c:r. count(c) for c in set(r)}?

python - 带有字符串的 Pandas Dataframe 上的逻辑

python - 了解 torch.nn.Parameter

database - 如何使用 R DBI 传递 data.frame 以进行更新