Сохранение диктанта, сгенерированного pandas read_excel, в файл excel на нескольких листах

#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(), иначе изменения не будут применены 🙂