pandas.DataFrame.to_json行別json

4205 ワード

最近はcsvファイルをDataFrameに変換してjson形式でフロントに表示する必要があるので、Dataframeのto_を使用する必要がありますjsonメソッドto_jsonメソッドのデフォルトは、カラム名をキーとし、カラム内容を値として{col 1:[v 11,v 21,v 31...],col 2:[v 12,v 22,v 32],...}というフォーマットを形成しますが、このフォーマット[row 1:{col 1:v 11,col 2:v 12,col 3:v 13...},row 2:{col 1:v 21,col 2:v 22,col 3:v 23...}]のように、行ごとにjsonに変換する必要がある場合があります.
公式サイトを検索するとto_が表示されますjsonメソッドにはorientというパラメータがあります.そのパラメータは、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
大まかな意味は次のとおりです.
  • Series回転jsonの場合、デフォルトのorientは「index」であり、orientオプションパラメータは{‘split’,’records’,’index’}
  • である.
  • DataFrame回転jsonの場合、デフォルトのorientは「columns」であり、orientオプションパラメータには「split」、「records」、「index」、「columns」、「values」}
  • があります.
  • jsonのフォーマットは以下の通りです.
  • split,スタイル{index->[index],columns->[columns],data->[values]}
  • records,スタイル[{column->value},...,{column->value}]
  • index、スタイルは{index->{column->value}}
  • columns、スタイルは{index->{column->value}}
  • values、配列スタイル
  • table、スタイルは{'schema':{schema},‘data':{data}、recordsと似ている

  • 公式サイトのdemoを見てみましょう
    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"}]}'

    主に公式サイトAPIを参照:https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.to_json.html