使用Pandas在其他两个数据帧中查找重复和唯一的元素?

2024-06-16 09:18:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个从XML数据创建的数据帧;它们有每个文件的文件名和路径列表,包括一些额外的元数据。像这样的

filename - filepath - meta1 - meta2 - meta3

基本上,每个数据帧都有可能与另一个数据帧中的文件同名的文件,但它们位于不同的路径中。我试图比较这两个数据帧,以找出在这两个数据帧中哪些文件是唯一的,以及在这两个数据帧中哪些文件名是通用的。我将只看一下文件名;因此,如果两个数据帧上都存在一个文件,即使路径不同,我也会将它们计为重复

我开始研究各种Pandas方法,并在指定我只想使用filename列之后找到了drop_duplicates()函数,该函数适用于我的情况

df_unique = df_merged.drop_duplicates(subset=['filename'])

这将返回一个数据帧,其中只包含已连接的两个数据帧中的唯一文件名。但是我怎样才能得到重复的列表呢

例如:

df1:
filename - filepath - meta1 - meta2 - meta3
test1      c:\tests    ax1      ax2    cv
test2      c:\tests    ax1      ax1    cv
test3      c:\tests    ax2      ax1    cb

df2:
filename - filepath - meta1 - meta2 - meta3
test1      c:\tests2   ax1      ax2    cv
test4      c:\tests2   ax1      ax1    cv
test2      c:\tests2   ax2      ax1    cc
test5      c:\tests2   ax1      ax1    cb

df_unique:
filename - filepath - meta1 - meta2 - meta3
test1      c:\tests    ax1      ax2    cv
test2      c:\tests    ax1      ax1    cv
test3      c:\tests    ax2      ax1    cb
test4      c:\tests2   ax1      ax1    cv
test5      c:\tests2   ax1      ax1    cb

df_duplicates:
test1      c:\tests    ax1      ax2    cv
test2      c:\tests    ax1      ax1    cv

因此,unique基本上是在两个数据帧中找到的任何唯一文件名的第一个实例,仅与文件名匹配(因此,如果其他字段不同,则可以) 重复数据帧是这两个数据帧中常见的第一个实例


Tags: 文件数据df文件名testsfilenamecvtest1
1条回答
网友
1楼 · 发布于 2024-06-16 09:18:25

尝试与外部联接方法合并,仅从左向右使用指示符表示唯一,同时使用两个指示符表示重复

df=pd.merge(df1,df2,on=['filename'],how=“outer”,indicator=True)

相关问题 更多 >