Ошибка с большим набором данных с использованием openpyxl python - PullRequest
0 голосов
/ 06 апреля 2020

У меня есть файл Excel XLSX (форма: 1180,6), которым я пытаюсь манипулировать. Практически создавая пустую строку для каждой второй строки и вставляя в нее данные, просто переупорядочив данные. Код работает нормально, когда я пробую всего 10 строк данных, но не работает, когда я запускаю все 1180 строк. Он также работает долго, прежде чем выплевывать те же необработанные данные. Разве openpyxl не создан для этого? Просто интересно, есть ли более эффективный способ сделать это. Вот мой код Ниже приведен код данных после использования нескольких строк, что мне и нужно, но не для всего набора данных.

%%time
import pandas as pd
import numpy as np
from openpyxl import load_workbook
import os

xls = pd.ExcelFile('input.xlsx')
df = xls.parse(0)
wb = load_workbook('input.xlsx')
#print(wb.sheetnames)
sh1=wb['Sheet1']
df.head()
#print(sh1.max_column)

for y in range(2,(sh1.max_row+1)*2,2):
    sh1.insert_rows(y)
    wb.save('output.xlsx')    
    m=3
for k in range(2,sh1.max_row+1,2):
    sh1.cell(row=k,column=1).value = sh1.cell(row=m,column=1).value # copy from one cell and paste
    sh1.cell(row=k,column=2).value = sh1.cell(row=m,column=3).value
    sh1.cell(row=k,column=3).value = sh1.cell(row=m,column=2).value
    sh1.cell(row=k,column=4).value = 'A'
    sh1.cell(row=m,column=4).value = 'H'
    sh1.cell(row=k,column=5).value = sh1.cell(row=m,column=6).value
    sh1.cell(row=k,column=6).value = sh1.cell(row=m,column=5).value
    m+=2
    wb.save('output.xlsx')

xls = pd.ExcelFile('output.xlsx')
df1 = xls.parse(0)
wb1 = load_workbook('output.xlsx')
df1

Data Sample

...