#python #pandas
Вопрос:
Метод Pandas read_excel() при вызове с sheet_name=None
помощью возвращает значение dict для каждого листа excel. Как я могу отменить эту операцию, т. Е. Взять диктант и сохранить файл Excel на нескольких листах? Я вижу только способ сохранить один кадр даты в excel с помощью метода to_excel ().
Ответ №1:
Я бы сказал, что обычно эта операция выполняется с использованием pandas.ExcelWriter
(предположим, df_dict-это ваш словарь с кадрами данных):
import pandas as pd
with pd.ExcelWriter('path/to/save/table.xlsx') as writer:
for key, df in df_dict.items():
df.to_excel(writer, key)
writer.save()
Комментарии:
1. Идеально! Я попытался отредактировать ваш ответ, но очередь заполнена. Можете ли вы обновить свой ответ, чтобы он был более общим , т. Е. Вместо строкового литерала для
`sheet_name`
вы могли бы сделать цикл.for key, df in df_dict: df_dict[key].to_excel(writer, key) writer.save()
(извините за плохую читаемость кода в комментарии). Таким образом, это будет представлять собой точную обратную процедуруread_excel(sheet_name=None)
.2. Эй, @topher217, я отредактировал ответ с вашим предложением, спасибо.
Ответ №2:
Если я вас правильно понимаю, вам нужно будет использовать класс под названием ExcelWriter
, в их документах есть классный пример:
df1 = pd.DataFrame([["AAA", "BBB"]], columns=["Spam", "Egg"])
df2 = pd.DataFrame([["ABC", "XYZ"]], columns=["Foo", "Bar"])
with ExcelWriter("path_to_file.xlsx") as writer:
df1.to_excel(writer, sheet_name="Sheet1")
df2.to_excel(writer, sheet_name="Sheet2")
writer.save()
Комментарии:
1. Не забудьте вызвать функцию writer.save(), иначе изменения не будут применены 🙂