在两个xlsx文件之间查找相同的行

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在两个xlsx文件之间查找相同的行相关的知识,希望对你有一定的参考价值。

我刚刚看到几个帖子,但我找不到解决方案。

我试图在Python中使用Pandas比较不同工作簿中的2个Excel文件。

WORK1:

A     B     C
1     1     1
2     2     2
3     3     3

WORK2:

A     B     C
1     1     1
2     5     2
3     3     3

欲望输出:

A     B     C
1     1     1

3     3     3

到目前为止,我得到的是:

import pandas as pd

df1 = pd.read_excel('/path/work1.xlsx')
df2 = pd.read_excel('/path/work2.xlsx')

common = df1[df1==df2]
print common
common.to_excel('/path/result.xlsx')

但我得到的是:

A     B     C
1     1     1
2           2
3     3     3

关键是如果work1的列B与work2有任何重合,则输出应该只是整行重合。

我正在使用NGS变体注释,因此分析变体共享的受影响家族将会很有帮助。

答案

您需要做的是编写条件以查找行中相等的所有列。截至目前,您生成的掩码与原始数据帧的形状相同,因此在编制索引时,您可以创建NaN而不是过滤。

选项1 使用eq + all -

df1[df1.eq(df2).all(axis=1)]

   A  B  C
0  1  1  1
2  3  3  3

请记住,在比较时,pandas会通过索引自动对齐数据帧,因此如果您的数据帧与索引或列不相同,则无法使用。如果是这种情况,则需要进行一些预处理。

df2.index = df1.index
df2.columns = df1.columns

现在,这(以及合并)应该工作。


选项2 所有列上的内部merge -

df1.merge(df2)

   A  B  C
0  1  1  1
1  3  3  3

以上是关于在两个xlsx文件之间查找相同的行的主要内容,如果未能解决你的问题,请参考以下文章

比较两个excel文件并返回不常见的行

Python读写Excel文件

Python读写Excel文件

PHP有限内存处理大文件(从两个文件提取相同行)

PHP有限内存处理大文件(从两个文件提取相同行)

BASH:在文本之间查找换行符并用两个换行符替换