我有一个excel文件,其中包含两列和743914行。我想要做的是逐行迭代,如果第一次找到两行的组合,则在第三列旁边分配一个值。否则,该值是我第一次找到该组合时在其旁边分配的值。问题类似于尝试构建字典,其中键是两个现有行的组合,值是第三行。我已经编写了上面的代码,我已经测试了20行并且工作正常。
from openpyxl import load_workbook
wb = load_workbook('test.xlsx')
dicta = {}
i = 0
lista = []
listb = []
ws = wb.active
for row in ws.iter_rows(min_row=1, max_col=3, max_row=743914):
for cell in row:
i += 1
if i%3 != 0:
lista.append(cell.value)
if i%3 == 0:
if lista in listb:
cell.value = dicta[tuple(lista)]
else:
cell.value = i
dicta[tuple(lista)] = i
listb.append(lista)
lista = []
我的问题是,当我将行向上扩展到743914时,它似乎无限运行并且完全没有效率,因为它已经运行了15个小时但还没有终止。
答案 0 :(得分:0)
我不认为您的问题与openpyxl有关,但是您的列表和嵌套检查呈指数级增长:if lista in listb
看起来很可疑。你的柜台也或多或少都不受控制。