Я делаю программу сравнения Excel с пандами. Я сделал простой инструмент сравнения, который работает хорошо, но он сравнивает построчно и отображает изменения, которые появляются в других разделах столбца. Это происходит потому, что координаты строки не равны на обоих листах. Чтобы уточнить немного, вот мой код:
import pandas as pd
import numpy as np
import openpyxl
wb = openpyxl.load_workbook('CK_CBF_Draft_01.2018_original.xlsx')
ws = wb['CBF']
list1 = []
for i in ws['H1':'H365']:
for cell in i:
list1.append(i)
# Define the diff function to show the changes in each field
def report_diff(x):
return x[1] if x[1] in list1 else '{} ---> {}'.format(x[0],x[1])
# We want to be able to easily tell which rows have changes
def has_change(row):
if "--->" in row.to_string():
return "Y"
else:
return "N"
# Read in both excel files
df1 = pd.read_excel('Invoice1.xlsx', 'Sheet1', na_values=['NA'])
df2 = pd.read_excel('Invoice2.xlsx', 'Sheet1', na_values=['NA'])
# Make sure we order by account number so the comparisons work
df1.sort_values(by="Host Name")
df1=df1.reindex()
df2.sort_values(by="Host Name")
df2=df2.reindex()
# Create a panel of the two dataframes
diff_panel = pd.Panel(dict(df1=df1,df2=df2))
#Apply the diff function
diff_output = diff_panel.apply(report_diff, axis=0)
# Flag all the changes
diff_output['has_change'] = diff_output.apply(has_change, axis=1)
#Save the changes to excel but only include the columns we care about
diff_output[(diff_output.has_change == 'Y')].to_excel('my-diff-1.xlsx',index=False,columns=["Host Name","CPU#","Memory","Invoice Total","Quantity"])
print('Worked')
Проблема, как я уже говорил, заключается в том, что она возвращает разность построчно, и различия неверны, поскольку они появляются в разных частях столбца. Кто-нибудь знает способ точного сравнения двух файлов с разными строками?
Спасибо за вашу помощь и извините, если вопрос немного расплывчат.