pandas.Series.to_json#
- Series.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=None, indent=None, storage_options=None, mode='w')[源代码]#
将对象转换为 JSON 字符串。
注意 NaN 和 None 将被转换为 null,datetime 对象将转换为 UNIX 时间戳。
- 参数:
- path_or_bufstr, path object, file-like object, or None, default None
字符串、路径对象(实现 os.PathLike[str])或实现写入()函数的类文件对象。如果为 None,则结果作为字符串返回。
- orientstr
指示预期的 JSON 字符串格式。
Series
默认为 ‘index’
允许的值是:{{‘split’, ‘records’, ‘index’, ‘table’}}。
DataFrame
默认为 ‘columns’
允许的值是:{{‘split’, ‘records’, ‘index’, ‘columns’, ‘values’, ‘table’}}。
JSON 字符串的格式
‘split’ : dict 格式如 {{‘index’ -> [index], ‘columns’ -> [columns], ‘data’ -> [values]}}
‘records’ : list 格式如 [{{column -> value}}, … , {{column -> value}}]
‘index’ : dict 格式如 {{index -> {{column -> value}}}}
‘columns’ : dict 格式如 {{column -> {{index -> value}}}}
‘values’ : 仅值数组
‘table’ : dict 格式如 {{‘schema’: {{schema}}, ‘data’: {{data}}}}
描述数据,其中 data 部分类似于
orient='records'。
- date_format{{None, ‘epoch’, ‘iso’}}
日期转换类型。‘epoch’ = 纪元毫秒,‘iso’ = ISO8601。默认值取决于 orient。对于
orient='table',默认值为 ‘iso’。对于所有其他 orient,默认值为 ‘epoch’。自版本 3.0.0 起已弃用: ‘epoch’ 日期格式已被弃用,将在未来版本中删除,请使用 ‘iso’ 代替。
- double_precisionint, default 10
用于编码浮点值的十进制位数。最大可能值为 15。传递大于 15 的 double_precision 将引发 ValueError。
- force_asciibool, default True
强制编码的字符串为 ASCII。
- date_unitstr, default ‘ms’ (毫秒)
用于编码的时间单位,控制时间戳和 ISO8601 的精度。‘s’、‘ms’、‘us’、‘ns’ 分别代表秒、毫秒、微秒和纳秒之一。
- default_handlercallable, default None
如果对象无法以其他方式转换为适合 JSON 的格式,则调用的处理程序。它应该接收一个参数,即要转换的对象,并返回一个可序列化的对象。
- linesbool,默认 False
如果 ‘orient’ 是 ‘records’,则输出逐行分隔的 json 格式。如果 ‘orient’ 不正确,将抛出 ValueError,因为其他 orient 不是列表状的。
- compressionstr or dict, default ‘infer’
用于输出数据的即时压缩。如果 ‘infer’ 且 ‘path_or_buf’ 是路径状的,则从以下扩展名检测压缩:‘.gz’、‘.bz2’、‘.zip’、‘.xz’、‘.zst’、‘.tar’、‘.tar.gz’、‘.tar.xz’ 或 ‘.tar.bz2’(否则不压缩)。设置为
None表示不压缩。也可以是一个字典,其中键'method'设置为 {'zip','gzip','bz2','zstd','xz','tar'},其他键值对转发给zipfile.ZipFile,gzip.GzipFile,bz2.BZ2File,zstandard.ZstdCompressor,lzma.LZMAFile或tarfile.TarFile,分别。例如,可以传递以下内容以加快压缩并创建可再现的 gzip 存档:compression={'method': 'gzip', 'compresslevel': 1, 'mtime': 1}。- indexbool or None, default None
仅当 ‘orient’ 为 ‘split’、‘index’、‘column’ 或 ‘table’ 时才使用索引。在这些选项中,‘index’ 和 ‘column’ 不支持 index=False。索引名称为 ‘index’ 且带有空
Index或如果其为 ‘index’ 将引发ValueError。- indentint, optional
用于缩进每个记录的空格数。
- storage_optionsdict, optional
对于特定存储连接有意义的额外选项,例如主机、端口、用户名、密码等。对于 HTTP(S) URL,键值对将作为标头选项转发到
urllib.request.Request。对于其他 URL(例如,以“s3://”和“gcs://”开头),键值对将转发到fsspec.open。有关更多详细信息,请参阅fsspec和urllib,有关存储选项的更多示例,请参阅 此处。- modestr, default ‘w’ (写入)
在提供 path_or_buf 时指定输出的 IO 模式。接受的参数仅为 ‘w’(写入)和 ‘a’(追加)。仅当 lines 为 True 且 orient 为 ‘records’ 时才支持 mode=’a’。
- 返回:
- None or str
如果 path_or_buf 为 None,则返回生成的 json 格式作为字符串。否则返回 None。
另请参阅
read_json将 JSON 字符串转换为 pandas 对象。
注意
indent=0的行为与标准库不同,标准库不缩进输出但会插入换行符。目前,pandas 中indent=0和默认的indent=None是等效的,但这可能会在未来版本中更改。orient='table'在 ‘schema’ 下包含一个 ‘pandas_version’ 字段。这存储了在最新版本的 schema 中使用的 pandas 版本。示例
>>> from json import loads, dumps >>> df = pd.DataFrame( ... [["a", "b"], ["c", "d"]], ... index=["row 1", "row 2"], ... columns=["col 1", "col 2"], ... )
>>> result = df.to_json(orient="split") >>> parsed = loads(result) >>> 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 = loads(result) >>> dumps(parsed, indent=4) [ {{ "col 1": "a", "col 2": "b" }}, {{ "col 1": "c", "col 2": "d" }} ]
使用
'index'格式的 JSON 进行 DataFrame 的编码/解码>>> result = df.to_json(orient="index") >>> parsed = loads(result) >>> dumps(parsed, indent=4) {{ "row 1": {{ "col 1": "a", "col 2": "b" }}, "row 2": {{ "col 1": "c", "col 2": "d" }} }}
使用
'columns'格式的 JSON 编码/解码 DataFrame>>> result = df.to_json(orient="columns") >>> parsed = loads(result) >>> dumps(parsed, indent=4) {{ "col 1": {{ "row 1": "a", "row 2": "c" }}, "col 2": {{ "row 1": "b", "row 2": "d" }} }}
使用
'values'格式的 JSON 编码/解码 DataFrame>>> result = df.to_json(orient="values") >>> parsed = loads(result) >>> dumps(parsed, indent=4) [ [ "a", "b" ], [ "c", "d" ] ]
使用表模式进行编码
>>> result = df.to_json(orient="table") >>> parsed = loads(result) >>> 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" }} ] }}