Python 中将 Pandas DataFrame 转换为 JSON?
Pandas DataFrames 是数据的表格表示,其中列代表单个数据条目中的各种数据点,每一行都是唯一的数据条目。而 JSON 是用 JavaScript 对象表示法编写的文本。
将 Pandas DataFrame 转换为 JSON
要将 Pandas DataFrames 转换为 JSON 格式,我们使用DataFrame.to_json()
Python 中Pandas库中的函数。to_json 函数中有多个自定义项可用于实现所需的 JSON 格式。看一下函数接受的参数,再探讨定制
参数:
范围 | 价值 | 用 |
---|---|---|
path_or_buf | 字符串或文件名,可选 | 文件路径或对象。如果未指定,则结果作为字符串返回。 |
东方 | 'split', 'records', 'index', 'columns', 'values', 'table', default='index' | 指示预期的 JSON 字符串格式。 |
日期格式 | 无,“纪元”,“iso”,默认 =“纪元” | 日期转换类型。'epoch' = 纪元毫秒,'iso' = ISO8601。默认值取决于方向。对于 orient='table',默认值为 'iso'。对于所有其他方向,默认值为 'epoch'。 |
双精度 | 整数值,默认值=10 | 编码浮点值时使用的小数位数。 |
force_ascii | 布尔值,默认值 = True | 强制编码字符串为 ASCII。 |
日期_单位 | 's', 'ms', 'us', 'ns', default='ms' | 要编码到的时间单位控制时间戳和 ISO8601 精度。这些值分别代表秒、毫秒、微秒和纳秒。 |
默认处理程序 | 可调用函数 | 如果对象无法以其他方式转换为适用于 JSON 的格式,则要调用的处理程序。应该接收一个参数,它是要转换的对象并返回一个可序列化的对象。 |
线 | 布尔值,默认值 = False | 如果 'orient' 是 'records' 写出行分隔的 json 格式。如果 'orient' 不正确,则会抛出 ValueError,因为其他人不是这样的。 |
压缩 | 'infer', 'gzip', 'bz2', 'zip', 'xz', None, default='infer' | 表示在输出文件中使用的压缩的字符串,仅在第一个参数是文件名时使用。默认情况下,压缩是从文件名推断的。 |
指数 | 布尔值,默认值 = True | 是否在 JSON 字符串中包含索引值。仅当 orient 为 'split' 或 'table' 时才支持不包括索引 (index=False)。 |
缩进 | 整数值 | 用于缩进每条记录的空格长度。无需提及可选参数。 |
我们现在看几个例子来理解函数DataFrame.to_json的用法。
示例 1:基本用法
import numpy as np import pandas as pd data = np.array([[ '1' , '2' ], [ '3' , '4' ]]) dataFrame = pd.DataFrame(data, columns = [ 'col1' , 'col2' ]) json = dataFrame.to_json() print (json) |
输出 :
{"col1":{"0":"1", "1":"3"}, "col2":{"0":"2", "1":"4"}}
示例 2:探索 DataFrame.to_json 函数的 'orient' 属性
import numpy as np import pandas as pd data = np.array([['1', '2'], ['3', '4']]) dataFrame = pd.DataFrame(data, columns = ['col1', 'col2']) json = dataFrame.to_json() print(json) json_split = dataFrame.to_json(orient ='split') print("json_split = ", json_split, "\n") json_records = dataFrame.to_json(orient ='records') print("json_records = ", json_records, "\n") json_index = dataFrame.to_json(orient ='index') print("json_index = ", json_index, "\n") json_columns = dataFrame.to_json(orient ='columns') print("json_columns = ", json_columns, "\n") json_values = dataFrame.to_json(orient ='values') print("json_values = ", json_values, "\n") json_table = dataFrame.to_json(orient ='table') print("json_table = ", json_table, "\n")
|
输出 :
json_split = {“columns”:[“col1”, “col2”], “index”:[0, 1], “data”:[[“1”, “2”], [“3”, “4”]]} json_records = [{“col1″:”1”, “col2″:”2”}, {“col1″:”3”, “col2″:”4”}] json_index = {“0”:{“col1″:”1”, “col2″:”2”}, “1”:{“col1″:”3”, “col2″:”4”}} json_columns = {“col1”:{“0″:”1”, “1”:”3″}, “col2”:{“0″:”2”, “1”:”4″}} json_values = [[“1”, “2”], [“3”, “4”]] json_table = {“schema”:{“fields”:[{“name”:”index”, “type”:”integer”}, {“name”:”col1″, “type”:”string”}, {“name”:”col2″, “type”:”string”}], “primaryKey”:[“index”], “pandas_version”:”0.20.0″}, “data”:[{“index”:0, “col1″:”1”, “col2″:”2”}, {“index”:1, “col1″:”3”, “col2″:”4”}]}
JSON 字符串的格式: - 'split' : dict like {'index' -> [index], 'columns' -> [columns], '数据' -> [值]} - 'records' : list like [{column -> value}, ... , {column -> value}] - 'index' : dict like {index -> {column -> value}} - 'columns' : dict like {column -> {index -> value}} - 'values' : 只是值数组 - 'table' : dict like {'schema': {schema}, 'data': {data}}
原始文档介绍
""" 将对象转换为 JSON 字符串。 注意 NaN 和 None 将被转换为 null 和 datetime 对象 将转换为 UNIX 时间戳。 参数 ---------- path_or_buf : str 或文件句柄,可选 文件路径或对象。如果未指定,则返回结果为 一个字符串。 东方:str 指示预期的 JSON 字符串格式。 * 系列: - 默认为“索引” - 允许的值为:{'split','records','index','table'}。 * 数据框: - 默认为“列” - 允许的值为:{'split'、'records'、'index'、'columns'、 '值','表'}。 * JSON 字符串的格式: - 'split' : dict like {'index' -> [index], 'columns' -> [columns], '数据' -> [值]} - 'records' : list like [{column -> value}, ... , {column -> value}] - 'index' : dict like {index -> {column -> value}} - 'columns' : dict like {column -> {index -> value}} - 'values' : 只是值数组 - 'table' : dict like {'schema': {schema}, 'data': {data}} 描述数据,其中数据组件就像“orient='records'”。 .. 版本已更改:: 0.20.0 日期格式:{无,'纪元','iso'} 日期转换类型。 'epoch' = 纪元毫秒, 'iso' = ISO8601。默认值取决于`orient`。为了 ``orient='table'``,默认为'iso'。对于所有其他方向, 默认值为“纪元”。 double_precision :int,默认为 10 编码时使用的小数位数 浮点值。 force_ascii : bool,默认为 True 强制编码字符串为 ASCII。 date_unit :str,默认'ms'(毫秒) 编码到的时间单位,控制时间戳和 ISO8601 精确。 's'、'ms'、'us'、'ns' 之一表示秒、毫秒、 分别为微秒和纳秒。 default_handler :可调用,默认无 如果对象不能以其他方式转换为 JSON 的合适格式。应该接收一个参数是 要转换并返回可序列化对象的对象。 行:布尔值,默认为假 如果 'orient' 是 'records' 写出行分隔的 json 格式。将要 如果“东方”不正确,则抛出 ValueError,因为其他人未列出 喜欢。 压缩:{'推断'、'gzip'、'bz2'、'zip'、'xz'、无} 表示在输出文件中使用的压缩的字符串, 仅在第一个参数是文件名时使用。默认情况下, 从文件名推断压缩。 .. 版本添加:: 0.21.0 .. 版本已更改:: 0.24.0 添加了“推断”选项并设置为默认值 索引:布尔值,默认为真 是否在 JSON 字符串中包含索引值。不是 仅在以下情况下才支持包含索引 (``index=False``) orient 是 'split' 或 'table'。 .. 版本已添加:: 0.23.0 缩进:整数,可选 用于缩进每条记录的空格长度。 .. 版本已添加:: 1.0.0 退货 ------- 无或 str 如果 path_or_buf 为 None,则返回生成的 json 格式作为 细绳。否则返回无。 也可以看看 -------- 读取_json 笔记 ----- ``indent=0`` 的行为与 stdlib 不同,它不 缩进输出但确实插入换行符。目前,“缩进=0” 和默认的“缩进=无”在熊猫中是等价的,尽管这 在未来的版本中可能会改变。 例子 -------- >>> df = pd.DataFrame([['a', 'b'], ['c', 'd']], ... index=['第 1 行','第 2 行'], ... columns=['col 1', 'col 2']) >>> df.to_json(orient='split') '{"columns":["col 1","col 2"], “索引”:[“第 1 行”,“第 2 行”], "数据":[["a","b"],["c","d"]]}' 使用“记录”格式的 JSON 编码/解码数据帧。 请注意,此编码不会保留索引标签。 >>> df.to_json(orient='记录') '[{"col 1":"a","col 2":"b"},{"col 1":"c","col 2":"d"}]' 使用“索引”格式的 JSON 编码/解码数据帧: >>> df.to_json(orient='index') '{"row 1":{"col 1":"a","col 2":"b"},"row 2":{"col 1":"c","col 2":"d" }}' 使用“列”格式的 JSON 编码/解码数据帧: >>> df.to_json(orient='columns') '{"col 1":{"row 1":"a","row 2":"c"},"col 2":{"row 1":"b","row 2":"d" }}' 编码/d
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构