#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 итераций была бы явным улучшением по сравнению с отсутствием сохранения вообще. 🙂