python - 如何计算多个数据帧之间的重叠行?

标签 python pandas merge overlap

我有一个如下所示的多个数据框。

df1 = pd.DataFrame({'Col1':["aaa","ddd","ggg"],'Col2':["bbb","eee","hhh"],'Col3':"ccc","fff","iii"]})
df2= pd.DataFrame({'Col1':["aaa","zzz","qqq"],'Col2':["bbb","xxx","eee"],'Col3':["ccc", yyy","www"]})
df3= pd.DataFrame({'Col1':"rrr","zzz","qqq","ppp"],'Col2':"ttt","xxx","eee","ttt"],'Col3':"yyy","yyy","www","qqq"]})

enter image description here

数据框有 3 列,有时它们的行在数据框之间重叠。 (例如,df1 和 df2 与“aaa、bbb、ccc”具有相同的行)。

我想知道数据帧之间的行是如何重叠的,并希望输出如下所示。

enter image description here

在此输出中,如果在数据帧中检测到相同的行,则输出将为 1,否则为 0。有谁知道如何制作此输出?

在实际数据中,我有大约 100 个数据帧。我首先尝试使用 pd.merge 但无法将其应用于 100 个数据帧...

非常感谢您的帮助。

最佳答案

这是使用 concat 的一种方法和 get_dummies :

l = [df1,df2,df3] #create a list of dataframes
final = pd.concat([i.assign(key=f"df{e+1}") for e,i in enumerate(l)],sort=False)

final = (final.assign(**pd.get_dummies(final.pop('key')))
        .groupby(['Col1','Col2','Col3']).max().reset_index())
  Col1 Col2 Col3  df1  df2  df3
0  aaa  bbb  ccc    1    1    0
1  ddd  eee  fff    1    0    0
2  ggg  hhh  iii    1    0    0
3  ppp  ttt  qqq    0    0    1
4  qqq  eee  www    0    1    1
5  rrr  ttt  yyy    0    0    1
6  zzz  xxx  yyy    0    1    1

关于python - 如何计算多个数据帧之间的重叠行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59853457/

相关文章:

python - 如何在不将其放入列表的情况下处理一行 for 循环?

Python:替换函数以编辑文件

python - Pandas :数据透视表中的列名列表

python - pandas.DataFrame.merge 中的错误?

Git merge 冲突 - "commit"VS "rebase --continue"

PHP按值合并数组为2个不同的数组值

python - 找到许多文件中最大的版本号文件?

python - flatMap 还是在 Python 3 中绑定(bind)?

python - 如何将分层命名的列添加到 Pandas DataFrame

python - 使用 Python 将字符串列合并到一组列表