【python】两个Excel文件针对某列进行对比,并显示原文件,及行号

两个Excel文件针对某列进行对比,并显示原文件,及行号

这种对比,只能是一个文件的原版和修改版进行对比,类似这种场景,如果完全不着边的两个表来对比不现实。可以对比今年和去年的每个月具体数据对比。复杂点的可以生成曲线。

下面只是纯对比某列不同的地方。我也试了,三个表对比,结果没有成功。

import pandas as pd

# 加载两个Excel文件
df1 = pd.read_excel('1.xlsx', index_col=None)  # 若无索引,则添加index_col=None来读取行号作为索引
df2 = pd.read_excel('2.xlsx', index_col=None)

# 添加原始行号列
df1['Original_Row'] = df1.index + 1
df2['Original_Row'] = df2.index + 1  # 假设行号从1开始计数

# 指定要对比的列名
comparison_column = '当月完成工作'

# 找出不同之处,同时保留原始行号
diff_df1 = df1[df1[comparison_column] != df2[comparison_column]].assign(Source='File1', Difference=1)
diff_df2 = df2[df1[comparison_column] != df2[comparison_column]].assign(Source='File2', Difference=1)

# 在合并差异数据时保持原始行号
result_df = pd.concat([diff_df1[['Original_Row', 'Source', comparison_column]], diff_df2[['Original_Row', 'Source', comparison_column]]])

# 可选:去除重复行(取决于是否允许同一行在两个文件中有不同的值)
# result_df = result_df.drop_duplicates(subset=['Original_Row', comparison_column])

# 将结果写入新的Excel文件
with pd.ExcelWriter('result.xlsx') as writer:
    result_df.to_excel(writer, sheet_name='Differences', index=False)

# 现在的结果DataFrame中包含了原始行号信息

结果:

### 回答1: Python可以使用第三方库`pandas`来比对两个Excel文件。 首先,我们需要导入`pandas`库和两个Excel文件。可以使用`read_excel()`函数将Excel文件读取为数据框(DataFrame)对象。 接下来,可以使用`equals()`方法将两个数据框对象进行比较。该方法将逐行逐列地比较两个数据框的元素,如果两个数据框完全相同,则返回True,否则返回False。 以下是使用Python比对两个Excel文件的示例代码: ``` python import pandas as pd # 读取两个Excel文件 df1 = pd.read_excel('file1.xlsx') df2 = pd.read_excel('file2.xlsx') # 比对两个数据框对象 is_equal = df1.equals(df2) # 输出比对结果 if is_equal: print("两个Excel文件完全相同。") else: print("两个Excel文件不完全相同。") ``` 以上代码假设需要比对的两个Excel文件分别为`file1.xlsx`和`file2.xlsx`。根据实际情况替换文件名即可。 这段代码将读取两个Excel文件,并使用`equals()`方法比较它们。最后输出比对结果,如果两个Excel文件完全相同,则输出"两个Excel文件完全相同",否则输出"两个Excel文件不完全相同"。 需要注意的是,比对过程中将比较每个单元格的内容,包括数值、文本、日期等。如果两个Excel文件格式不完全相同(如列数、列顺序等不同),则不能得到正确的比对结果。在比对前,可以使用`pandas`库的其他函数对需要比对的数据进行预处理,以确保格式的一致性。 ### 回答2: 在Python中,可以使用openpyxl库来比对两个Excel文件。首先,我们需要使用openpyxl打开两个Excel文件,并获取各自的工作簿和工作表。然后,可以一行一行地比对两个Excel文件中的数据。 以下是一个示例代码,用于比对两个Excel文件中的数据: ``` import openpyxl def compare_excel(file1, file2): wb1 = openpyxl.load_workbook(file1) # 打开第一个Excel文件 wb2 = openpyxl.load_workbook(file2) # 打开第二个Excel文件 sheet1 = wb1.active # 获取第一个Excel文件的活动工作表 sheet2 = wb2.active # 获取第二个Excel文件的活动工作表 for row1, row2 in zip(sheet1.iter_rows(), sheet2.iter_rows()): for cell1, cell2 in zip(row1, row2): if cell1.value != cell2.value: # 比对两个单元格的值 print(f"不匹配的单元格: {cell1.coordinate} - {cell1.value} | {cell2.coordinate} - {cell2.value}") print("比对完成") # 调用函数,传入要比对的两个Excel文件路径 compare_excel("file1.xlsx", "file2.xlsx") ``` 上述代码将会逐行比对两个Excel文件中的单元格数据,并输出不匹配的单元格的坐标和值。你可以根据实际情况,对比较结果进行其他处理或记录。 需要注意的是,为了运行上述代码,你需要先安装openpyxl库,你可以使用pip命令来进行安装: ``` pip install openpyxl ``` 希望能对你有所帮助。 ### 回答3: Python可以使用第三方库pandas来比对两个Excel文件。下面给出一个简单的示例。 首先,需要安装pandas库。可以使用以下命令安装: ```python pip install pandas ``` 接下来,可以使用pandas库中的read_excel函数读取两个Excel文件,并将它们分别存储在两个DataFrame对象中。然后,使用equals方法来比较两个DataFrame对象是否相等。 以下是一个简单的比对两个Excel文件的示例代码: ```python import pandas as pd # 读取第一个Excel文件 df1 = pd.read_excel("file1.xlsx") # 读取第二个Excel文件 df2 = pd.read_excel("file2.xlsx") # 比较两个DataFrame对象是否相等 if df1.equals(df2): print("两个Excel文件相同") else: print("两个Excel文件不同") ``` 以上代码中,我们读取了两个Excel文件并将它们分别存储在df1和df2两个DataFrame对象中。然后,使用equals方法比较这两个DataFrame对象是否相等。如果相等,则输出"两个Excel文件相同",否则输出"两个Excel文件不同"。 这只是一个简单的示例,实际应用中可能需要根据具体情况进行更复杂的比对操作。但使用pandas库可以方便地读取Excel文件,并对数据进行各种处理和比对操作。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值