pandas.Series.to_json#

Series.to_json(path_or_buf=None, *, orient=None, date_format=None, double_precision=10, force_ascii=True, date_unit='ms', default_handler=None, строки=False, compression='infer', index=None, отступ=None, storage_options=None, mode='w')[источник]#

Преобразовать объект в строку JSON.

Примечание: NaN и None будут преобразованы в null, а объекты datetime будут преобразованы в UNIX-метки времени.

Параметры:
path_or_bufstr, объект пути, файлоподобный объект или None, по умолчанию None

Строка, объект пути (реализующий os.PathLike[str]) или файлоподобный объект, реализующий функцию write(). Если None, результат возвращается как строка.

orientstr

Указание ожидаемого формата JSON-строки.

  • Series:

    • по умолчанию 'index'

    • допустимые значения: {‘split’, ‘records’, ‘index’, ‘table’}.

  • DataFrame:

    • по умолчанию 'columns'

    • допустимые значения: {‘split’, ‘records’, ‘index’, ‘columns’, ‘values’, ‘table’}.

  • Формат строки JSON:

    • ‘split’ : dict like {‘index’ -> [index], ‘columns’ -> [columns], ‘data’ -> [values]}

    • 'records' : список вида [{column -> value}, … , {column -> value}]

    • 'index' : словарь вида {index -> {column -> value}}

    • ‘columns’ : dict like {column -> {index -> value}}

    • ‘values’ : только массив значений

    • 'table' : словарь вида {'schema': {schema}, 'data': {data}}

    Описание данных, где компонент данных подобен orient='records'.

date_format{None, 'epoch', 'iso'}

Тип преобразования даты. 'epoch' = эпоха в миллисекундах, 'iso' = ISO8601. По умолчанию зависит от orient. Для orient='table', по умолчанию 'iso'. Для всех других ориентаций, по умолчанию 'epoch'.

double_precisionint, по умолчанию 10

Количество знаков после запятой для использования при кодировании значений с плавающей точкой. Максимально возможное значение - 15. Передача double_precision больше 15 вызовет ValueError.

force_asciibool, по умолчанию True

Принудительное преобразование закодированной строки в ASCII.

date_unitstr, по умолчанию 'ms' (миллисекунды)

Единица времени для кодирования, определяет точность временной метки и ISO8601. Одна из ‘s’, ‘ms’, ‘us’, ‘ns’ для секунд, миллисекунд, микросекунд и наносекунд соответственно.

default_handlerвызываемый объект, по умолчанию None

Обработчик для вызова, если объект не может быть преобразован в подходящий формат для JSON. Должен принимать один аргумент — объект для преобразования — и возвращать сериализуемый объект.

строкиbool, по умолчанию False

Если 'orient' равен 'records', записывает формат json с разделением по строкам. Выбросит ValueError, если 'orient' некорректен, так как другие не являются подобными списку.

compressionстрока или словарь, по умолчанию ‘infer’

Для сжатия выходных данных на лету. Если 'infer' и 'path_or_buf' является путем, то определить сжатие по следующим расширениям: '.gz', '.bz2', '.zip', '.xz', '.zst', '.tar', '.tar.gz', '.tar.xz' или '.tar.bz2' (в противном случае без сжатия). Установить в None без сжатия. Также может быть словарем с ключом 'method' установить в одно из {'zip', 'gzip', 'bz2', 'zstd', 'xz', 'tar'} и другие пары ключ-значение передаются в zipfile.ZipFile, gzip.GzipFile, bz2.BZ2File, zstandard.ZstdCompressor, lzma.LZMAFile или tarfile.TarFile, соответственно. Например, для ускорения сжатия и создания воспроизводимого gzip-архива можно передать: compression={'method': 'gzip', 'compresslevel': 1, 'mtime': 1}.

Добавлено в версии 1.5.0: Добавлена поддержка для .tar файлы.

Изменено в версии 1.4.0: Поддержка Zstandard.

indexbool или None, по умолчанию None

Индекс используется только когда 'orient' имеет значение 'split', 'index', 'column' или 'table'. Из них 'index' и 'column' не поддерживают index=False.

отступint, необязательный

Длина пробела, используемого для отступа каждой записи.

storage_optionsdict, optional

Дополнительные параметры, которые имеют смысл для конкретного соединения с хранилищем, например, хост, порт, имя пользователя, пароль и т.д. Для HTTP(S) URL пары ключ-значение передаются в urllib.request.Request в качестве параметров заголовка. Для других URL-адресов (например, начинающихся с "s3://" и "gcs://") пары ключ-значение передаются fsspec.open. Пожалуйста, смотрите fsspec и urllib для получения дополнительной информации, а для дополнительных примеров по опциям хранения см. здесь.

modestr, по умолчанию ‘w’ (запись)

Укажите режим ввода-вывода для вывода при предоставлении path_or_buf. Допустимые аргументы: только 'w' (запись) и 'a' (добавление). Режим='a' поддерживается только когда lines=True и orient='records'.

Возвращает:
None или str

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

Смотрите также

read_json

Преобразовать строку JSON в объект pandas.

Примечания

Поведение indent=0 отличается от стандартной библиотеки, которая не делает отступы в выводе, но вставляет переводы строк. В настоящее время, indent=0 и значение по умолчанию indent=None эквивалентны в pandas, хотя это может измениться в будущем релизе.

orient='table' содержит поле 'pandas_version' в разделе 'schema'. Оно хранит версию pandas используется в последней версии схемы.

Примеры

>>> from json import loads, dumps
>>> df = pd.DataFrame(
...     [["a", "b"], ["c", "d"]],
...     index=["row 1", "row 2"],
...     columns=["col 1", "col 2"],
... )
>>> result = df.to_json(orient="split")
>>> parsed = loads(result)
>>> dumps(parsed, indent=4)  
{
    "columns": [
        "col 1",
        "col 2"
    ],
    "index": [
        "row 1",
        "row 2"
    ],
    "data": [
        [
            "a",
            "b"
        ],
        [
            "c",
            "d"
        ]
    ]
}

Кодирование/декодирование Dataframe с использованием 'records' форматированный JSON. Обратите внимание, что метки индекса не сохраняются при таком кодировании.

>>> result = df.to_json(orient="records")
>>> parsed = loads(result)
>>> dumps(parsed, indent=4)  
[
    {
        "col 1": "a",
        "col 2": "b"
    },
    {
        "col 1": "c",
        "col 2": "d"
    }
]

Кодирование/декодирование Dataframe с использованием 'index' форматированный JSON:

>>> result = df.to_json(orient="index")
>>> parsed = loads(result)
>>> dumps(parsed, indent=4)  
{
    "row 1": {
        "col 1": "a",
        "col 2": "b"
    },
    "row 2": {
        "col 1": "c",
        "col 2": "d"
    }
}

Кодирование/декодирование Dataframe с использованием 'columns' форматированный JSON:

>>> result = df.to_json(orient="columns")
>>> parsed = loads(result)
>>> dumps(parsed, indent=4)  
{
    "col 1": {
        "row 1": "a",
        "row 2": "c"
    },
    "col 2": {
        "row 1": "b",
        "row 2": "d"
    }
}

Кодирование/декодирование Dataframe с использованием 'values' форматированный JSON:

>>> result = df.to_json(orient="values")
>>> parsed = loads(result)
>>> dumps(parsed, indent=4)  
[
    [
        "a",
        "b"
    ],
    [
        "c",
        "d"
    ]
]

Кодирование с использованием Table Schema:

>>> result = df.to_json(orient="table")
>>> parsed = loads(result)
>>> dumps(parsed, indent=4)  
{
    "schema": {
        "fields": [
            {
                "name": "index",
                "type": "string"
            },
            {
                "name": "col 1",
                "type": "string"
            },
            {
                "name": "col 2",
                "type": "string"
            }
        ],
        "primaryKey": [
            "index"
        ],
        "pandas_version": "1.4.0"
    },
    "data": [
        {
            "index": "row 1",
            "col 1": "a",
            "col 2": "b"
        },
        {
            "index": "row 2",
            "col 1": "c",
            "col 2": "d"
        }
    ]
}