大数据集的性能不佳

时间:2017-11-29 11:39:21

标签: python excel performance openpyxl

我有一个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个小时但还没有终止。

1 个答案:

答案 0 :(得分:0)

我不认为您的问题与openpyxl有关,但是您的列表和嵌套检查呈指数级增长:if lista in listb看起来很可疑。你的柜台也或多或少都不受控制。