我有一个如下所示的多个数据框。
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](/image/O3BcK.png)
数据框有 3 列,有时它们的行在数据框之间重叠。 (例如,df1 和 df2 与“aaa、bbb、ccc”具有相同的行)。
我想知道数据帧之间的行是如何重叠的,并希望输出如下所示。
![enter image description here](/image/sgxZt.png)
在此输出中,如果在数据帧中检测到相同的行,则输出将为 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/