pandas.DataFrame.to_json goes to json by line

  • 2020-11-03 22:31:23
  • OfStack

You recently needed to convert the csv file to DataFrame and display it to the foreground as json, so you need the to_json method of Dataframe

to_json method the default column names as key, and column content for value, form {col1: [v11 v21, v31...]. , col2: [v12, v22 v32],... } this format, but sometimes we need to press line into json, like this format [row1: {col1: v11 col2: v12, col3: v13...}, row2: {col1: v21 col2: v22, col3: v23...}]

By looking up the official website, we can see that the to_json method has one parameter of orient, and its parameters are explained as follows:


orient : string 
Series 
default is  ' index' 
allowed values are: { ' split','records','index'} 
DataFrame 
default is  ' columns' 
allowed values are: { ' split','records','index','columns','values'} 
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'. 
Changed in version 0.20.0

Roughly meaning:

If it is Series to json, the default orient is 'index', the optional parameters of orient are {' split','records','index'}

If it is DataFrame to json, the default orient is 'columns', orient optional parameters are {' split','records','index','columns','values'}

The format of json is as follows

split, style {index - > [index], columns - > [columns], data - > [values]}

records, style [{column -) > value},... , {column - > value}]

index, style {index - > {column - > value}}

columns, style {index - > {column - > value}}

values, array style

table, style {' schema': {schema}, 'data': {data}}, similar to records

Take a look at demo given by the official website


df = pd.DataFrame([['a', 'b'], ['c', 'd']],
  index=['row 1', 'row 2'],
  columns=['col 1', 'col 2'])
###########
split
###########
df.to_json(orient='split')
>'{"columns":["col 1","col 2"],
 "index":["row 1","row 2"],
 "data":[["a","b"],["c","d"]]}'
###########
index
###########
df.to_json(orient='index')
>'{"row 1":{"col 1":"a","col 2":"b"},"row 2":{"col 1":"c","col 2":"d"}}'
###########
records
###########
df.to_json(orient='index')
>'[{"col 1":"a","col 2":"b"},{"col 1":"c","col 2":"d"}]'
###########
table
###########
df.to_json(orient='table')
>'{"schema": {"fields": [{"name": "index", "type": "string"},
  {"name": "col 1", "type": "string"},
  {"name": "col 2", "type": "string"}],
 "primaryKey": "index",
 "pandas_version": "0.20.0"},
 "data": [{"index": "row 1", "col 1": "a", "col 2": "b"},
 {"index": "row 2", "col 1": "c", "col 2": "d"}]}'

Main reference website API: https: / / pandas pydata. org/pandas - docs stable/generated/pandas DataFrame. to_json. html


Related articles: