gpt4 book ai didi

python - 有没有办法比较两个excel并根据比较执行插入行之类的操作?

转载 作者:行者123 更新时间:2023-12-04 07:18:46 25 4
gpt4 key购买 nike

我正在尝试使用 python 解决问题。
我有两个 excel,比如说 Old_excel 和 New_excel。
New_excel 是 Old_excel 的一种版本,在 New_excel 中插入的几行在 Old_excel 中不存在,并且从 New_excel 中删除了几行。
Example of Old_excel and New_excel
我正在寻找一种解决方案,如果新行已在 New_excel 中插入,则可以在 Old_excel 中插入空白行,如果已从 New_excel 中删除行,则在 New_excel 中插入空白行,如下所述:-
The two excels should look like
任何帮助,将不胜感激。
注意:输出excel示例中的黄色是为了帮助查看者快速理解问题陈述。因此在解决方案中不需要。

最佳答案

您需要安装 pandasopenpyxl包。
然后我们会发现两个文件之间的差异。这只是读取行并将它们散列:

import pandas as pd

df1 = pd.read_excel('old.xlsx', engine='openpyxl', header=None, dtype=str)
df2 = pd.read_excel('new.xlsx', engine='openpyxl', header=None, dtype=str)
h1 = df1.apply(lambda x: hash(str(x.values)), axis=1)
h2 = df2.apply(lambda x: hash(str(x.values)), axis=1)

ch2 = h1[~h1.isin(h2)]
ch1 = h2[~h2.isin(h1)]
现在我们将再次读取 excel 文件(以保留原始样式)并更改相关单元格的样式:
from openpyxl.utils.dataframe import dataframe_to_rows
from openpyxl import load_workbook
from openpyxl.styles import PatternFill

fill = PatternFill("solid", fgColor="fdff32")
wb1 = load_workbook('old.xlsx')
wb2 = load_workbook('new.xlsx')

ws1 = wb1.active
ws2 = wb2.active

# if number of rows is different
while ws2.max_row>ws1.max_row:
ws1.append([None])
while ws1.max_row>ws2.max_row:
ws2.append([None])

# define highltning style
fill = PatternFill("solid", fgColor="fdff32")

for ix in ch1.index:
for cell in list(ws1.rows)[ix]:
cell.fill = fill
for ix in ch2.index:
for cell in list(ws2.rows)[ix]:
cell.fill = fill
wb1.save('old_.xlsx')
wb2.save('new_.xlsx')

关于python - 有没有办法比较两个excel并根据比较执行插入行之类的操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68631167/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com