DataFrame: to_json()

Last update on February 26 2020

Pandas DataFrame: to_json() function

The to_json() function is used to convert the object to a JSON string.

Note: NaN's and None will be converted to null and datetime objects will be converted to UNIX timestamps.

Syntax:

DataFrame.to_json(self, path_or_buf=None, orient=None, date_format=None, double_precision=10, force_ascii=True, date_unit='ms', default_handler=None, lines=False, compression='infer', index=True)

Parameters:

Name

Description

Type/Default Value

Required / Optional

path_or_buf

File path or object. If not specified, the result is returned as a string.

string or file handle

Optional

orient

Indication of expected JSON string format.

  • Series

    • default is ‘index’

    • allowed values are: {‘split’,’records’,’index’,’table’}

  • DataFrame

    • default is ‘columns’

    • allowed values are: {‘split’,’records’,’index’,’columns’,’values’,’table’}

  • The format of the JSON string

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

    • ‘records’ : list like [{column -> value}, … , {column -> value}]

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

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

    • ‘values’ : just the values array

    • ‘table’ : dict like {‘schema’: {schema}, ‘data’: {data}} describing the data, and the data component is like orient='records'.

string

Required

date_format

Type of date conversion. ‘epoch’ = epoch milliseconds, ‘iso’ = ISO8601. The default depends on the orient. For orient='table', the default is ‘iso’. For all other orients, the default is ‘epoch’.

{None, ‘epoch’, ‘iso’}

Required

double_precision

The number of decimal places to use when encoding floating point values.

int Default Value: 10

Required

force_ascii

Force encoded string to be ASCII.

bool Default Value: True

Required

date_unit

The time unit to encode to, governs timestamp and ISO8601 precision. One of ‘s’, ‘ms’, ‘us’, ‘ns’ for second, millisecond, microsecond, and nanosecond respectively.

string Default Value: ‘ms’ (milliseconds)

Required

default_handler

Handler to call if object cannot otherwise be converted to a suitable format for JSON. Should receive a single argument which is the object to convert and return a serialisable object.

callable Default Value: None

Required

lines

If 'orient' is 'records' write out line delimited json format. Will throw ValueError if incorrect 'orient' since others are not list like.

bool Default Value: False

Required

compression

A string representing the compression to use in the output file, only used when the first argument is a filename. By default, the compression is inferred from the filename.

{'infer', 'gzip', 'bz2', 'zip', 'xz', None}

Required

index

Whether to include the index values in the JSON string. Not including the index (index=False) is only supported when orient is ‘split’ or ‘table’.

bool Default Value: True

Required

Returns: None or str If path_or_buf is None, returns the resulting json format as a string. Otherwise returns None.

Example:

import numpy as np
import pandas as pd

In [11]:

df = pd.DataFrame([['p', 'q'], ['r', 's']],
                  index=['row 1', 'row 2'],
                  columns=['c1', 'c2'])
df.to_json(orient='split')

Out[11]:

'{"columns":["c1","c2"],"index":["row 1","row 2"],"data":[["p","q"],["r","s"]]}'

Encoding/decoding a Dataframe using 'records' formatted JSON:In [12]:

df.to_json(orient='records')

Out[12]:

'[{"c1":"p","c2":"q"},{"c1":"r","c2":"s"}]'

Encoding/decoding a Dataframe using 'index' formatted JSON:In [13]:

df.to_json(orient='index')

Out[13]:

'{"row 1":{"c1":"p","c2":"q"},"row 2":{"c1":"r","c2":"s"}}'

Encoding/decoding a Dataframe using 'columns' formatted JSON:In [14]:

df.to_json(orient='columns')

Out[14]:

'{"c1":{"row 1":"p","row 2":"r"},"c2":{"row 1":"q","row 2":"s"}}'

Encoding/decoding a Dataframe using 'values' formatted JSON:In [15]:

df.to_json(orient='values')

Out[15]:

'[["p","q"],["r","s"]]'

Encoding with Table Schema:In [16]:

df.to_json(orient='table')

Out[16]:

'{"schema": {"fields":[{"name":"index","type":"string"},{"name":"c1","type":"string"},{"name":"c2","type":"string"}],"primaryKey":["index"],"pandas_version":"0.20.0"}, "data": [{"index":"row 1","c1":"p","c2":"q"},{"index":"row 2","c1":"r","c2":"s"}]}'

Download the above Notebook from here.

Reference : https://www.w3resource.com/pandas/dataframe/dataframe-to_json.php

Last updated