當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python pandas.DataFrame.to_json用法及代碼示例


用法:

DataFrame.to_json(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, indent=None, storage_options=None)

將對象轉換為 JSON 字符串。

注意 NaN 和 None 將被轉換為 null,而 datetime 對象將被轉換為 UNIX 時間戳。

參數

path_or_bufstr,路徑對象,file-like 對象,或無,默認無

字符串、路徑對象(實現 os.PathLike[str])或實現 write() 函數的 file-like 對象。如果為 None,則結果以字符串形式返回。

orientstr

指示預期的 JSON 字符串格式。

  • 係列:

    • default is ‘index’

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

  • DataFrame :

    • default is ‘columns’

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

  • JSON字符串的格式:

    • ‘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, where data component is like orient='records'.

date_format{無,‘epoch’, ‘iso’}

日期轉換的類型。 ‘epoch’ = 紀元毫秒,‘iso’ = ISO8601。默認值取決於 orient 。對於 orient='table' ,默認值為 ‘iso’。對於所有其他方向,默認值為‘epoch’。

double_precision整數,默認 10

編碼浮點值時使用的小數位數。

force_ascii布爾值,默認為真

強製編碼字符串為 ASCII。

date_unitstr,默認 ‘ms’(毫秒)

編碼到的時間單位,控製時間戳和 ISO8601 精度。 ‘s’, ‘ms’, ‘us’, ‘ns’ 之一,分別表示秒、毫秒、微秒和納秒。

default_handler可調用,默認無

如果對象無法以其他方式轉換為適合 JSON 的格式,則調用處理程序。應該接收一個參數,該參數是要轉換的對象並返回一個可序列化的對象。

lines布爾值,默認為 False

如果 ‘orient’ 是 ‘records’ 則寫出 line-delimited json 格式。如果不正確 ‘orient’ 將拋出 ValueError,因為其他不是 list-like。

compressionstr 或 dict,默認 ‘infer’

用於輸出數據的即時壓縮。如果 ‘infer’ 和 ‘path_or_buf’ path-like,則檢測來自以下擴展名的壓縮:'.gz'、'.bz2'、'.zip'、'.xz' 或 '.zst'(否則不壓縮) .調成None無壓縮。也可以是帶鍵的字典'method'設置為 { 之一'zip','gzip','bz2','zstd'} 和其他鍵值對被轉發到zipfile.ZipFile,gzip.GzipFile,bz2.BZ2File, 或者zstandard.ZstdDecompressor, 分別。例如,可以傳遞以下內容以加快壓縮速度並創建可重現的 gzip 存檔:compression={'method':'gzip', 'compresslevel':1, 'mtime':1}.

index布爾值,默認為真

是否在 JSON 字符串中包含索引值。僅當 orient 為 ‘split’ or ‘table’ 時才支持不包括索引 (index=False)。

indent整數,可選

用於縮進每條記錄的空白長度。

storage_options字典,可選

對特定存儲連接有意義的額外選項,例如主機、端口、用戶名、密碼等。對於 HTTP(S) URL,鍵值對作為標頭選項轉發到 urllib。對於其他 URL(例如以 “s3://” 和 “gcs://” 開頭),鍵值對被轉發到 fsspec 。有關詳細信息,請參閱fsspecurllib

返回

無或字符串

如果path_or_buf 為無,則將生成的 json 格式作為字符串返回。否則返回無。

注意

indent=0 的行為與標準庫不同,標準庫不縮進輸出但插入換行符。目前,indent=0 和默認的 indent=None 在 pandas 中是等效的,盡管這可能會在未來的版本中改變。

orient='table' 在‘schema’ 下包含一個‘pandas_version’ 字段。這存儲了架構的最新版本中使用的pandas 的版本。

例子

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

使用 'records' 格式的 JSON 編碼/解碼數據幀。請注意,此編碼不會保留索引標簽。

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

使用 'index' 格式的 JSON 編碼/解碼數據幀:

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

使用 'columns' 格式的 JSON 編碼/解碼數據幀:

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

使用 'values' 格式的 JSON 編碼/解碼數據幀:

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

使用表模式編碼:

>>> result = df.to_json(orient="table")
>>> parsed = json.loads(result)
>>> json.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"
        }
    ]
}

相關用法


注:本文由純淨天空篩選整理自pandas.pydata.org大神的英文原創作品 pandas.DataFrame.to_json。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。