pandas.ExcelWriter
- classpandas.ExcelWriter(path, engine=None, date_format=None, datetime_format=None, mode='w', storage_options=None, if_sheet_exists=None, engine_kwargs=None, **kwargs)[source]
-
Класс для записи объектов DataFrame в электронные таблицы Excel.
По умолчанию используется:
xlwt для файлов xls
xlsxwriter для файлов xlsx, если xlsxwriter установлен, в противном случае openpyxl
odswriter для файлов ods
См.
DataFrame.to_excelдля типичного использования.Писатель должен использоваться как контекстный менеджер. В противном случае вызовите close(), чтобы сохранить и закрыть все открытые дескрипторы файлов.
- Параметры
-
- path:str или typing.BinaryIO
-
Путь к файлу xls, xlsx или ods.
- engine:str (необязательно)
-
Используемый движок для записи. Если None, по умолчанию
io.excel.<extension>.writer. ПРИМЕЧАНИЕ: может быть передан только в качестве ключевого аргумента.Устаревшее начиная с версии 1.2.0: Поскольку пакет xlwt больше не поддерживается, движок
xlwtбудет удалён в будущих версиях pandas. - date_format:str, по умолчанию None
-
Строка формата для дат, записываемых в файлы Excel (например, ‘ГГГГ-ММ-ДД’).
- datetime_format:str, по умолчанию None
-
Строка формата для объектов datetime, записываемых в файлы Excel. (например, ‘ГГГГ-ММ-ДД ЧЧ:ММ:СС’).
- mode:{‘w’, ‘a’}, по умолчанию ‘w’
-
Режим файла (запись или добавление). Добавление не работает с URL fsspec.
- storage_options:dict, необязательно
-
Дополнительные параметры, подходящие для определенного подключения к хранилищу, например, хост, порт, имя пользователя, пароль и т. д. Для URL HTTP(S) пары ключ-значение передаются в
urllib.request.Requestв качестве параметров заголовка. Для других URL (например, начинающихся с “s3://” и “gcs://”) пары ключ-значение передаются вfsspec.open. Подробности см. вfsspecиurllib, а более подробные примеры параметров хранилища см. здесь.Введено в версии 1.2.0.
- if_sheet_exists:{‘error’, ‘new’, ‘replace’, ‘overlay’}, по умолчанию ‘error’
-
Как вести себя при попытке записи в лист, который уже существует (только режим добавления).
error: вызывается ValueError.
new: Создаётся новый лист с именем, определяемым движком.
replace: Содержимое листа удаляется перед записью в него.
overlay: Содержимое записывается в существующий лист без удаления старого содержимого.
Введено в версии 1.3.0.
Изменено в версии 1.4.0: Добавлен
overlayвариант - engine_kwargs:dict, необязательно
-
Ключевые аргументы, передаваемые в движок. Они будут переданы в следующие функции соответствующих движков:
xlsxwriter:
xlsxwriter.Workbook(file, **engine_kwargs)openpyxl (режим записи):
openpyxl.Workbook(**engine_kwargs)openpyxl (режим добавления):
openpyxl.load_workbook(file, **engine_kwargs)odswriter:
odf.opendocument.OpenDocumentSpreadsheet(**engine_kwargs)
Введено в версии 1.3.0.
- **kwargs:dict, необязательно
-
Ключевые аргументы, передаваемые в движок.
Устаревшее начиная с версии 1.3.0: Используйте engine_kwargs вместо этого.
Примечания
Для совместимости с пишущими модулями CSV ExcelWriter сериализует списки и словари в строки перед записью.
Примеры
Типовое использование:
>>> df = pd.DataFrame([["ABC", "XYZ"]], columns=["Foo", "Bar"]) >>> with pd.ExcelWriter("path_to_file.xlsx") as writer: ... df.to_excel(writer)Для записи в отдельные листы в одном файле:
>>> df1 = pd.DataFrame([["AAA", "BBB"]], columns=["Spam", "Egg"]) >>> df2 = pd.DataFrame([["ABC", "XYZ"]], columns=["Foo", "Bar"]) >>> with pd.ExcelWriter("path_to_file.xlsx") as writer: ... df1.to_excel(writer, sheet_name="Sheet1") ... df2.to_excel(writer, sheet_name="Sheet2")Можно задать формат даты или формата datetime:
>>> from datetime import date, datetime >>> df = pd.DataFrame( ... [ ... [date(2014, 1, 31), date(1999, 9, 24)], ... [datetime(1998, 5, 26, 23, 33, 4), datetime(2014, 2, 28, 13, 5, 13)], ... ], ... index=["Date", "Datetime"], ... columns=["X", "Y"], ... ) >>> with pd.ExcelWriter( ... "path_to_file.xlsx", ... date_format="YYYY-MM-DD", ... datetime_format="YYYY-MM-DD HH:MM:SS" ... ) as writer: ... df.to_excel(writer)
Также можно добавить в существующий файл Excel:
>>> with pd.ExcelWriter("path_to_file.xlsx", mode="a", engine="openpyxl") as writer: ... df.to_excel(writer, sheet_name="Sheet3")Здесь параметр if_sheet_exists может быть установлен на replace, если лист уже существует:
>>> with ExcelWriter( ... "path_to_file.xlsx", ... mode="a", ... engine="openpyxl", ... if_sheet_exists="replace", ... ) as writer: ... df.to_excel(writer, sheet_name="Sheet1")
Можно также записать несколько DataFrame в один лист. Обратите внимание, что параметр
if_sheet_existsдолжен быть установлен наoverlay.>>> with ExcelWriter("path_to_file.xlsx", ... mode="a", ... engine="openpyxl", ... if_sheet_exists="overlay", ... ) as writer: ... df1.to_excel(writer, sheet_name="Sheet1") ... df2.to_excel(writer, sheet_name="Sheet1", startcol=3)Можно хранить файл Excel в оперативной памяти:
>>> import io >>> df = pd.DataFrame([["ABC", "XYZ"]], columns=["Foo", "Bar"]) >>> buffer = io.BytesIO() >>> with pd.ExcelWriter(buffer) as writer: ... df.to_excel(writer)
Можно упаковать файл Excel в архив zip:
>>> import zipfile >>> df = pd.DataFrame([["ABC", "XYZ"]], columns=["Foo", "Bar"]) >>> with zipfile.ZipFile("path_to_file.zip", "w") as zf: ... with zf.open("filename.xlsx", "w") as buffer: ... with pd.ExcelWriter(buffer) as writer: ... df.to_excel(writer)Можно указать дополнительные аргументы для базового движка:
>>> with pd.ExcelWriter( ... "path_to_file.xlsx", ... engine="xlsxwriter", ... engine_kwargs={"options": {"nan_inf_to_errors": True}} ... ) as writer: ... df.to_excel(writer)В режиме добавления
engine_kwargsпередаются вload_workbookopenpyxl’s:>>> with pd.ExcelWriter( ... "path_to_file.xlsx", ... engine="openpyxl", ... mode="a", ... engine_kwargs={"keep_vba": True} ... ) as writer: ... df.to_excel(writer, sheet_name="Sheet2")Атрибуты
Экземпляр книги.
(УСТАРЕВШЕ) Текущий лист для записи.
Строка формата для дат, записываемых в файлы Excel (например,
Строка формата для дат, записываемых в файлы Excel (например,
Имя движка.
(УСТАРЕВШЕ) Дескрипторы листов Excel.
Как вести себя при записи в лист, который уже существует в режиме добавления.
(УСТАРЕВШЕ) Путь к файлу Excel.
Отображение имён листов на объекты листов.
Поддерживаемые расширения формата writer.
Методы
check_extension(ext)Проверяет расширение пути по отношению к поддерживаемым расширениям Writer.
close()синоним для save, чтобы сделать его более похожим на файл
save()(УСТАРЕВШЕ) Сохранение книги в файл.
write_cells(cells[, sheet_name, startrow, ...])(УСТАРЕВШЕ) Запись заданных отформатированных ячеек в лист Excel
© 2008–2022, AQR Capital Management, LLC, Lambda Foundry, Inc. and PyData Development Team
Licensed under the 3-clause BSD License.
https://pandas.pydata.org/pandas-docs/version/1.5.0/reference/api/pandas.ExcelWriter.html