How to convert a Pandas DataFrame to JSON?

To convert a Pandas DataFrame to JSON, use the to_json() method. This method takes in the DataFrame and the path of the output file, which will be a JSON file. The output file has the same structure as the DataFrame and contains the same data. The data is stored in the JSON format. The output file can be used to create an array of objects, which can be accessed by the JSON.parse() method. This method is useful for creating a lightweight representation of the data stored in the DataFrame.


Often you might be interested in converting a pandas DataFrame to a JSON format.

Fortunately this is easy to do using the  function, which allows you to convert a DataFrame to a JSON string with one of the following formats:

  • ‘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}}

This tutorial shows how to convert a DataFrame to each of the six formats using the following pandas DataFrame:

import pandas as pd

#create DataFrame
df = pd.DataFrame({'points': [25, 12, 15, 19],
                   'assists': [5, 7, 7, 12]})  

#view DataFrame
df

        points	assists
0	25	5
1	12	7
2	15	7
3	19	12

Method 1: ‘Split’

df.to_json(orient='split')

{
   "columns": [
      "points",
      "assists"
   ],
   "index": [
      0,
      1,
      2,
      3
   ],
   "data": [
      [
         25,
         5
      ],
      [
         12,
         7
      ],
      [
         15,
         7
      ],
      [
         19,
         12
      ]
   ]
}

Method 2: ‘Records’

df.to_json(orient='records')

[
   {
      "points": 25,
      "assists": 5
   },
   {
      "points": 12,
      "assists": 7
   },
   {
      "points": 15,
      "assists": 7
   },
   {
      "points": 19,
      "assists": 12
   }
] 

Method 3: ‘Index’

df.to_json(orient='index') 

{
   "0": {
      "points": 25,
      "assists": 5
   },
   "1": {
      "points": 12,
      "assists": 7
   },
   "2": {
      "points": 15,
      "assists": 7
   },
   "3": {
      "points": 19,
      "assists": 12
   }
}

Method 4: ‘Columns’

df.to_json(orient='columns') 

{
   "points": {
      "0": 25,
      "1": 12,
      "2": 15,
      "3": 19
   },
   "assists": {
      "0": 5,
      "1": 7,
      "2": 7,
      "3": 12
   }
}

Method 5: ‘Values’

df.to_json(orient='values') 

[
   [
      25,
      5
   ],
   [
      12,
      7
   ],
   [
      15,
      7
   ],
   [
      19,
      12
   ]
]

Method 6: ‘Table’

df.to_json(orient='table') 

{
   "schema": {
      "fields": [
         {
            "name": "index",
            "type": "integer"
         },
         {
            "name": "points",
            "type": "integer"
         },
         {
            "name": "assists",
            "type": "integer"
         }
      ],
      "primaryKey": [
         "index"
      ],
      "pandas_version": "0.20.0"
   },
   "data": [
      {
         "index": 0,
         "points": 25,
         "assists": 5
      },
      {
         "index": 1,
         "points": 12,
         "assists": 7
      },
      {
         "index": 2,
         "points": 15,
         "assists": 7
      },
      {
         "index": 3,
         "points": 19,
         "assists": 12
      }
   ]
}

How to Export a JSON File

You can use the following syntax to export a JSON file to a specific file path on your computer:

#create JSON file 
json_file = df.to_json(orient='records') 

#export JSON file
with open('my_data.json', 'w') as f:
    f.write(json_file)

You can find the complete documentation for the pandas to_json() function .

x