使用Python比较2个excel文件

7 python excel compare xlrd pandas

我有两个xlsx文件如下:

value1   value2   value3
0.456   3.456    0.4325436
6.24654 0.235435 6.376546
4.26545 4.264543 7.2564523
Run Code Online (Sandbox Code Playgroud)

value1   value2  value3
0.456   3.456    0.4325436
6.24654 0.23546  6.376546
4.26545 4.264543 7.2564523
Run Code Online (Sandbox Code Playgroud)

我需要比较所有细胞,以及来自file1 !=细胞的细胞file2 print.

import xlrd
rb = xlrd.open_workbook('file1.xlsx')
rb1 = xlrd.open_workbook('file2.xlsx')
sheet = rb.sheet_by_index(0)
for rownum in range(sheet.nrows):
    row = sheet.row_values(rownum)
    for c_el in row:
        print c_el
Run Code Online (Sandbox Code Playgroud)

如何添加的比较电池file1file2

Abb*_*bas 18

使用pandas,你可以这么简单:

import pandas as pd

df1 = pd.read_excel('excel1.xlsx')
df2 = pd.read_excel('excel2.xlsx')

difference = df1[df1!=df2]
print difference
Run Code Online (Sandbox Code Playgroud)

结果将如下所示:

在此输入图像描述


Mar*_*ans 6

以下方法可以帮助您入门:

from itertools import izip_longest
import xlrd

rb1 = xlrd.open_workbook('file1.xlsx')
rb2 = xlrd.open_workbook('file2.xlsx')

sheet1 = rb1.sheet_by_index(0)
sheet2 = rb2.sheet_by_index(0)

for rownum in range(max(sheet1.nrows, sheet2.nrows)):
    if rownum < sheet1.nrows:
        row_rb1 = sheet1.row_values(rownum)
        row_rb2 = sheet2.row_values(rownum)

        for colnum, (c1, c2) in enumerate(izip_longest(row_rb1, row_rb2)):
            if c1 != c2:
                print "Row {} Col {} - {} != {}".format(rownum+1, colnum+1, c1, c2)
    else:
        print "Row {} missing".format(rownum+1)
Run Code Online (Sandbox Code Playgroud)

这将显示两个文件之间不同的任何单元格.对于您给定的两个文件,将显示:

Row 3 Col 2 - 0.235435 != 0.23546
Run Code Online (Sandbox Code Playgroud)

  • 获取列名的更好方法是使用“xlrd.formula.colname(colnum)”。然后,这将适用于具有多个“Z”列的工作表。 (2认同)