【发布时间】:2021-09-06 15:53:29
【问题描述】:
我构建了一个脚本,它使用两个 Excel 工作表(Sheet1、Sheet2)作为数据框(df1、df2)并在另一个工作表(结果)中返回更新的 df1,概述了两个工作表之间的差异。
我正在尝试找到一种方法来仅返回存在差异的行。
compare.py
import pandas as pd
import numpy as np
filename = 'SAMPLE FILE.xlsx'
df1 = pd.read_excel(filename, 'Sheet1')
df2 = pd.read_excel(filename, 'Sheet2')
writer = pd.ExcelWriter(filename, engine = 'xlsxwriter')
df1.to_excel(writer, sheet_name = 'Sheet1',index=False,header=True)
df2.to_excel(writer, sheet_name = 'Sheet2',index=False,header=True)
rows, cols = np.where(np.not_equal(df1, df2))
df3 = pd.DataFrame()
for cell in zip(rows, cols):
df1.iloc[cell[0], cell[1]] = ' {} -> {} '.format(df1.iloc[cell[0], cell[1]], df2.iloc[cell[0], cell[1]])
df3 = df3.append(df1.iloc[cell[0]])[df1.columns]
df3.to_excel(writer,sheet_name='Results', index=False, header=True)
writer.save()
我得到的结果与我正在寻找的结果
编辑:我已编辑我的帖子以提供正确的解决方案
【问题讨论】:
-
你能分享一个数据样本吗?
-
结果中的前几行可以用作样本。只需在 Sheet2 中的任何单元格中进行更改