大数据集表现不佳
Bad performance with big dataset
我有一个 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 个小时并且尚未终止。
我认为您的问题与 openpyxl 无关,但列表和嵌套检查呈指数增长:if lista in listb
看起来很可疑。您的柜台也或多或少不受控制。
我有一个 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 个小时并且尚未终止。
我认为您的问题与 openpyxl 无关,但列表和嵌套检查呈指数增长:if lista in listb
看起来很可疑。您的柜台也或多或少不受控制。