Сохранить в Excel во время цикла (фрейм данных Pandas)

#python #excel #pandas

#python #excel #панды

Вопрос:

Я запускаю цикл, который создает большой вложенный словарь и, в конце концов, сохраняет его в файл Excel с помощью pandas.

Как мне сохранить в тот же файл Excel после X итераций вместо того, чтобы ждать до конца? Например, для каждой 10-й итерации? Возможно ли это?

Текущий код (упрощенный):

 import pandas as pd

d = {}

def some_function(x, y)
    d[x] = {'id': x, 'status': 'ok', 'info': y}
    ...
    print('ok')

elements = ['elem1', 'elem2', 'elem3', 'elem4', ..., 'elem1000']

count = 1

for element in elements:
    try:
        some_function(count, element)
    except:
        d[count] = {'id': count, 'status': 'error'}
    count  = 1

df = pd.DateFrame(d).T
df.to_excel('output.xlsx', index=False)
 

Ответ №1:

Насколько я знаю, нет хорошего способа передать вывод на один лист Excel с помощью pandas. Вы можете добавлять данные в виде дополнительных листов, используя pandas.ExcelWriter, но это не похоже на то, что вы хотите.

Вы всегда можете просто запускать df.to_excel каждые X итераций и перезаписывать существующий файл, но это может замедлиться по мере увеличения объема ваших данных.

Комментарии:

1. Перезапись файла после X итераций может быть решением. В настоящее время в цикле более 2000 элементов, поэтому я боюсь, что скрипт завершит работу во время выполнения, не сохранив вообще ничего. Перезапись после X итераций была бы явным улучшением по сравнению с отсутствием сохранения вообще. 🙂