Сообщить об ошибке.

Метод DataFrame.to_csv() модуля pandas в Python

Запись DataFrame в формате CSV

Синтаксис:

DataFrame.to_csv(path_or_buf=None, *, sep=',', na_rep='', float_format=None, 
                 columns=None, header=True, index=True, index_label=None, 
                 mode='w', encoding=None, compression='infer', quoting=None, 
                 quotechar='"', lineterminator=None, chunksize=None, date_format=None, 
                 doublequote=True, escapechar=None, decimal='.', errors='strict', 
                 storage_options=None)

Параметры:

  • path_or_buf=None - cтрока, объект реализующий os.PathLike (например pathlib) или объект подобный файлу, реализующий функцию file.write(). Если None, то результат возвращается в виде строки. Если передается недвоичный файловый объект, его следует открыть с помощью newline=’’ (аргумент open()), отключив универсальные переводы строк. Если передается двоичный файловый объект, то аргумент mode должен содержать 'b' .
  • sep=',' - строка, разделитель полей для выходного файла.
  • na_rep='' - чем заполнять пропущенные значения (NaN) в данных.
  • float_format=None - строка формата для чисел float. Если задан вызываемый объект, он имеет приоритет над другими аргументами числового форматирования, такими как аргумент decimal.
  • columns=None - список строк с именами столбцов для записи в таблицу Excel
  • header=True - писать ли имена столбцов. Если этому аргументу передан список строк, то предполагается, что это псевдонимы для имен столбцов.
  • index=True - записывать или нет индексные метки строк (индекс).
  • index_label=None - метка столбца для индекса, если требуется. Если не указано ни одного, а header и index имеют значение True, то используются индексные метки. Следует указать последовательность, если объект использует MultiIndex. Если значение False, то не записывает поля для имен индексов.
  • mode='w' - передается либо в open(mode=), либо в fsspec.open(mode=) для управления открытием файла. Типичные значения включают:
    • 'w' - сначала очищает существующий файл.
    • 'x' - эксклюзивное создание, завершается неудачей, если файл уже существует.
    • 'a' - дозаписывает в конец файла, если он существует.
  • encoding=None - строка с кодировкой, которая будет использоваться в выходном файле, по умолчанию имеет значение 'utf-8'. Кодировка не поддерживается, если path_or_buf является файловым объектом.
  • compression='infer' - для сжатия выходных данных "на лету". Если compression='infer' и аргумент 'path_or_buf' является объектом pathlib, то обнаруживает сжатие из следующих расширений: '.gz', '.bz2', '.zip', '.xz', '.zst', '.tar', '.tar.gz', '.tar.xz' или '.tar.bz2' (в противном случае сжатие отсутствует). Значение None говорит об отсутствии сжатия.Этот аргумент может быть словарем c обязательным ключом 'method', установленным в один из 'zip', 'gzip', 'bz2', 'zstd', 'xz', 'tar', а другие пары ключ-значение пересылаются соответствующему модулю. В качестве примера, для более быстрого сжатия и создания воспроизводимого архива gzip можно передать следующее: compression={'method': 'gzip', 'compresslevel': 1, 'mtime': 1}.
  • quoting=None - по умолчанию используется csv.QUOTE_MINIMAL . Если установлен float_format, то значения с плавающей точкой преобразуются в строки и, следовательно, в csv.QUOTE_NONNUMERIC будет рассматривать их как нечисловые.
  • quotechar='"' - cтрока длиной 1 символ. Это символ, используемый для заключения полей в кавычки.
  • lineterminator=None - символ новой строки или последовательность символов, которые будут использоваться в выходном файле. По умолчанию используется os.linesep, который зависит от операционной системы.
  • chunksize=None - количество строк для одновременной записи.
  • date_format=None - строка формата для объектов datetime.
  • doublequote=True - управляет цитированием символа quotechar внутри поля.
  • escapechar=None - cтрока длиной 1 символ, используемый для экранирования sep и quotechar, когда это уместно.
  • decimal='.' - Символ, распознаваемый как десятичный разделитель. Например. ',' для европейских данных.
  • errors='strict' - как должны обрабатываться ошибки кодирования и декодирования. Подробнее в описании аргумента errors для функции open().
  • storage_options=None - дополнительные параметры, которые имеют смысл для конкретного подключения к хранилищу, например хост, порт, имя пользователя, пароль и т.д. Для URL-адресов HTTP, пары ключ-значение пересылаются в urllib.request.Request в качестве аргумента headers. Для других URL-адресов (например, начинающихся с 's3://' и 'gcs://') пары ключ-значение пересылаются в fsspec.open.

Возвращаемое значение:

  • если path_or_buf=None, то возвращает результирующий формат csv в виде строки. В противном случае возвращает None.

Описание и примеры использования DataFrame.to_csv():

Метод DataFrame.to_csv() модуля pandas записывает объект DataFrame в файл значений, разделенных запятыми (CSV).

Создаем файл out.csv, содержащий DataFrame без индексов

>>> import pandas as pd
>>> df = pd.DataFrame({'name': ['Raphael', 'Donatello'],
...                    'mask': ['red', 'purple'],
...                    'weapon': ['sai', 'bo staff']})

>>> df
#         name    mask    weapon
# 0    Raphael     red       sai
# 1  Donatello  purple  bo staff

>>> df.to_csv('out.csv', index=False)

Создать архив out.zip, который содержит файл out.csv

>>> compression_opts = {method='zip', archive_name='out.csv'}  
>>> df.to_csv('out.zip', index=False, compression=compression_opts)

Чтобы создать архив out.csv.zip в автоматическом режиме, который будет содержит файл out.csv

>>> from pathlib import Path
# необходимо, что бы файл назывался 'test.csv.zip'
# а путь был объектом `pathlib`
>>> f = Path('test.csv.zip')
>>> df.to_csv(f)

Чтобы записать csv-файл в новую папку или вложенную папку, сначала нужно будет создать его, используя либо модуль pathlib, либо os:

При помощи модуля pathlib:

>>> from pathlib import Path  
>>> filepath = Path('folder/subfolder/out.csv')  
>>> filepath.parent.mkdir(parents=True, exist_ok=True)  
>>> df.to_csv(filepath)

При помощи модуля os:

>>> import os  
>>> os.makedirs('folder/subfolder', exist_ok=True)  
>>> df.to_csv('folder/subfolder/out.csv')