pandas.read_json # 熊猫。read_json ( path_or_buf、 *、 orient = None、 typ = 'frame'、 dtype = None、 convert_axes = None、 convert_dates = True、 keep_default_dates = True、 precision_float = False、 date_unit = None、 encoding = None、 encoding_errors = 'strict'、 lines = False, chunksize = None, compression = 'infer', nrows = None, storage_options = None, dtype_backend = _NoDefault.no_default, engine = 'ujson' ) [来源] # 将 JSON 字符串转换为 pandas 对象。 参数: path_or_buf有效的 JSON str、路径对象或类文件对象任何有效的字符串路径都是可接受的。该字符串可以是 URL。有效的 URL 方案包括 http、ftp、s3 和 file。对于文件 URL,需要一个主机。本地文件可以是: file://localhost/path/to/table.json. 如果你想传入一个路径对象,pandas 接受任何 os.PathLike. 通过类文件对象,我们引用具有read()方法的对象,例如文件句柄(例如通过内置open函数)或StringIO. 自版本 2.1.0 起已弃用:不推荐使用传递 json 文字字符串。 东方str,可选预期 JSON 字符串格式的指示。兼容的 JSON 字符串可以to_json()通过相应的 orient 值生成。可能的方向集是: 'split': 听写就像 {index -> [index], columns -> [columns], data -> [values]} 'records': 列出类似 [{column -> value}, ... , {column -> value}] 'index': 听写就像{index -> {column -> value}} 'columns': 听写就像{column -> {index -> value}} 'values':只是值数组 'table': 听写就像{'schema': {schema}, 'data': {data}} 允许的值和默认值取决于typ参数的值。 什么时候,typ == 'series' 允许的方向是{'split','records','index'} 默认是'index' Series 索引对于 orient 必须是唯一的'index'。 什么时候,typ == 'frame' 允许的方向是{'split','records','index', 'columns','values', 'table'} 默认是'columns' DataFrame 索引对于 orients'index'和 必须是唯一的'columns'。 DataFrame 列对于 orients 、 和 必须是'index'唯一 'columns'的'records'。 type {'frame', 'series'}, 默认 'frame'要恢复的对象的类型。 dtype bool 或 dict, 默认 None如果为 True,则推断 dtypes;如果要指定列的字典,则使用它们;如果为 False,则根本不推断数据类型,仅适用于数据。 对于除 之外的所有orient值'table',默认值为 True。 Convert_axes bool, 默认 None尝试将轴转换为正确的数据类型。 对于除 之外的所有orient值'table',默认值为 True。 Convert_dates bool 或 str 列表,默认 True如果为 True,则可以转换默认的类似日期的列(取决于 keep_default_dates)。如果为 False,则不会转换任何日期。如果是列名称列表,则这些列将被转换,并且默认的类似日期的列也可能被转换(取决于 keep_default_dates)。 keep_default_dates bool, 默认 True如果解析日期(convert_dates 不为 False),则尝试解析默认的类似日期的列。列标签是类似日期的,如果 它以'_at', 它以'_time', 它开始于'timestamp', 是'modified',或者 这是'date'。 Precision_float bool,默认 False设置为在将字符串解码为双精度值时启用更高精度 (strtod) 函数。默认值(False)是使用快速但不太精确的内置功能。 date_unit str,默认无用于检测是否转换日期的时间戳单位。默认行为是尝试检测正确的精度,但如果不希望这样做,则传递“s”、“ms”、“us”或“ns”之一以分别强制仅解析秒、毫秒、微秒或纳秒。 编码str,默认为'utf-8'用于解码 py3 字节的编码。 coding_errors str,可选,默认“strict”如何处理编码错误。可能值的列表。 1.3.0 版本中的新增功能。 lines bool, 默认 False将文件作为每行 json 对象读取。 chunksize int,可选返回 JsonReader 对象进行迭代。 有关 的更多信息,请参阅行分隔的 json 文档chunksize。仅当lines=True时才能传递此参数。如果为 None,则文件将被一次性读入内存。 压缩str 或 dict,默认 'infer'用于磁盘数据的即时解压缩。如果“infer”和“path_or_buf”是类似路径,则检测以下扩展名的压缩:“.gz”、“.bz2”、“.zip”、“.xz”、“.zst”、“.tar” 、“.tar.gz”、“.tar.xz”或“.tar.bz2”(否则不压缩)。如果使用“zip”或“tar”,ZIP 文件必须仅包含一个要读入的数据文件。设置为None则不解压缩。也可以是键设置为 { , , , , , }'method'之一的字典,其他键值对分别转发到 , , , ,或 。作为示例,可以使用自定义压缩字典传递以下内容以进行 Zstandard 解压缩: 。'zip''gzip''bz2''zstd''xz''tar'zipfile.ZipFilegzip.GzipFilebz2.BZ2Filezstandard.ZstdDecompressorlzma.LZMAFiletarfile.TarFilecompression={'method': 'zstd', 'dict_data': my_compression_dict} 1.5.0 版本中的新增功能:添加了对.tar文件的支持。 版本 1.4.0 中更改: Zstandard 支持。 nrows整数,可选必须读取的行分隔 json 文件的行数。仅当lines=True时才能传递此参数。如果为 None,则将返回所有行。 storage_options字典,可选对于特定存储连接有意义的额外选项,例如主机、端口、用户名、密码等。对于 HTTP(S) URL,键值对将urllib.request.Request作为标头选项转发。对于其他 URL(例如以“s3://”和“gcs://”开头),键值对将转发到fsspec.open。请参阅fsspec和urllib了解更多详细信息,有关存储选项的更多示例,请参阅此处。 dtype_backend {'numpy_nullable', 'pyarrow'}, 默认 'numpy_nullable'应用于结果的后端数据类型DataFrame (仍处于试验阶段)。行为如下: "numpy_nullable":返回 nullable-dtype-backed DataFrame (默认)。 "pyarrow":返回 pyarrow 支持的可为空的ArrowDtype DataFrame。 2.0版本中的新增内容。 引擎{“ujson”, “pyarrow”}, 默认“ujson”要使用的解析器引擎。该"pyarrow"引擎仅在 时可用 lines=True。 2.0版本中的新增内容。 返回: Series、DataFrame 或 pandas.api.typing.JsonReaderchunksize当is not0或 时,返回 JsonReader None。否则,返回的类型取决于 的值typ。 也可以看看 DataFrame.to_json将 DataFrame 转换为 JSON 字符串。 Series.to_json将系列转换为 JSON 字符串。 json_normalize将半结构化 JSON 数据规范化为平面表。 笔记 具体来说orient='table',如果写入DataFrame字面 Index名称为indexto_json()的a ,则后续读取操作将错误地将Index名称设置为 None。这是因为index也被用来DataFrame.to_json() 表示缺失的Index名称,后续的 read_json()操作无法区分两者。 aMultiIndex和任何以 开头的名称也会遇到相同的限制'level_'。 例子 >>> from io import StringIO >>> df = pd.DataFrame([['a', 'b'], ['c', 'd']], ... index=['row 1', 'row 2'], ... columns=['col 1', 'col 2']) 使用格式化 JSON 对 Dataframe 进行编码/解码'split': >>> df.to_json(orient='split') '{"columns":["col 1","col 2"],"index":["row 1","row 2"],"data":[["a","b"],["c","d"]]}' >>> pd.read_json(StringIO(_), orient='split') col 1 col 2 row 1 a b row 2 c d 使用格式化 JSON 对 Dataframe 进行编码/解码'index': >>> df.to_json(orient='index') '{"row 1":{"col 1":"a","col 2":"b"},"row 2":{"col 1":"c","col 2":"d"}}' >>> pd.read_json(StringIO(_), orient='index') col 1 col 2 row 1 a b row 2 c d 使用格式化的 JSON 对 Dataframe 进行编码/解码'records'。请注意,此编码不会保留索引标签。 >>> df.to_json(orient='records') '[{"col 1":"a","col 2":"b"},{"col 1":"c","col 2":"d"}]' >>> pd.read_json(StringIO(_), orient='records') col 1 col 2 0 a b 1 c d 使用表模式进行编码 >>> 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":"1.4.0"},"data":[{"index":"row 1","col 1":"a","col 2":"b"},{"index":"row 2","col 1":"c","col 2":"d"}]}' 下面的例子使用dtype_backend="numpy_nullable" >>> data = '''{"index": {"0": 0, "1": 1}, ... "a": {"0": 1, "1": null}, ... "b": {"0": 2.5, "1": 4.5}, ... "c": {"0": true, "1": false}, ... "d": {"0": "a", "1": "b"}, ... "e": {"0": 1577.2, "1": 1577.1}}''' >>> pd.read_json(StringIO(data), dtype_backend="numpy_nullable") index a b c d e 0 0 1 2.5 True a 1577.2 1 1 <NA> 4.5 False b 1577.1