55_Pandas.DataFrame 转换为 JSON 字符串/文件并保存 (to_json)

这篇具有很好参考价值的文章主要介绍了55_Pandas.DataFrame 转换为 JSON 字符串/文件并保存 (to_json)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

55_Pandas.DataFrame 转换为 JSON 字符串/文件并保存 (to_json)

使用pandas.DataFrame的方法to_json(),可以将pandas.DataFrame转为JSON格式字符串(str类型)或者输出(保存)为JSON格式文件。

在此,对以下内容进行说明。有关其他参数,请参阅上面的官方文档。

  • pandas.DataFrame.to_json() 的基本用法
    • 转换为JSON格式字符串
    • 输出(保存)为JSON格式文件
      • 文件压缩:参数压缩
  • 指定格式:参数orient
    • split
    • records
      • JSON Lines(.jsonl)
    • index
    • columns(默认值)
    • values
    • table

如果要将 pandas.DataFrame 转换为字典(dict 类型),请使用 to_dict() 方法。

  • 54_Pandas将DataFrame、Series转换为字典 (to_dict)

另外,用pandas读写(输入/输出)CSV文件和Excel文件见以下文章。

  • 03_Pandas读取csv/tsv文件(read_csv,read_table)
  • 34_Pandas对CSV文件内容的导出和添加(to_csv)
  • 50_Pandas读取 Excel 文件 (xlsx, xls)
  • 51_Pandas (to_excel) 编写 Excel 文件 (xlsx, xls)

这里以创建如下 pandas.DataFrame 为例。

import pandas as pd
import pprint
import json

df = pd.DataFrame({'col1': [1, 2, 3], 'col2': ['a', 'x', '啊']},
                  index=['row1', 'row2', 'row3'])

print(df)
#       col1 col2
# row1     1    a
# row2     2    x
# row3     3    啊

pandas.DataFrame.to_json() 的基本用法

转换为JSON格式字符串

当你从 pandas.DataFrame 调用 to_json() 方法时,默认情况下它被转换为 JSON 格式字符串(str 类型),如下所示。

print(df.to_json())
# {"col1":{"row1":1,"row2":2,"row3":3},"col2":{"row1":"a","row2":"x","row3":"\u554a"}}

print(type(df.to_json()))
# <class 'str'>

非 ascii 字符(例如双字节字符)是 Unicode 转义的。如果参数 force_ascii=False,则不会进行 Unicode 转义。

输出(保存)为JSON格式文件

如果您将路径指定为第一个参数,它将被保存为一个文件。未指定路径时输出的字符串按原样写入文件。

path = 'data/sample_from_pandas_columns.json'

df.to_json(path)
with open(path) as f:
    s = f.read()
    print(s)
    print(type(s))
# {"col1":{"row1":1,"row2":2,"row3":3},"col2":{"row1":"a","row2":"x","row3":"\u554a"}}
# <class 'str'>

使用open()读取时,参数encoding='unicode-escape’会将Unicode转义序列\uXXXX转换为对应的字符。

with open(path, encoding='unicode-escape') as f:
    s = f.read()
    print(s)
    print(type(s))
# {"col1":{"row1":1,"row2":2,"row3":3},"col2":{"row1":"a","row2":"x","row3":"啊"}}
# <class 'str'>

使用标准库 json 模块的 json.load() 函数作为字典加载。在这种情况下,默认情况下 Unicode 转义序列 \uXXXX被转换为相应的字符。

with open(path) as f:
    d = json.load(f)
    print(d)
    print(type(d))
# {'col1': {'row1': 1, 'row2': 2, 'row3': 3}, 'col2': {'row1': 'a', 'row2': 'x', 'row3': '啊'}}
# <class 'dict'>

文件压缩:参数压缩

通过指定从 pandas 版本 0.21.0 添加的参数压缩,可以在输出文件时压缩文件。

指定“gzip”、“bz2”、“xz”之一。

df.to_json('data/sample_from_pandas_columns.gz', compression='gzip')

指定格式:参数orient

参数orient可以指定如何将pandas.DataFrame行标签索引、列标签列和值输出为JSON。

在这里,还显示了使用 json.loads() 将输出字符串转换为字典并使用 pprint() 显示的结果。

split

{index -> [index], columns -> [columns], data -> [values]}

print(df.to_json(orient='split'))
# {"columns":["col1","col2"],"index":["row1","row2","row3"],"data":[[1,"a"],[2,"x"],[3,"\u554a"]]}

pprint.pprint(json.loads(df.to_json(orient='split')))
# {'columns': ['col1', 'col2'],
#  'data': [[1, 'a'], [2, 'x'], [3, '啊']],
#  'index': ['row1', 'row2', 'row3']}

records

[{column -> value}, ... , {column -> value}]

print(df.to_json(orient='records'))
# [{"col1":1,"col2":"a"},{"col1":2,"col2":"x"},{"col1":3,"col2":"\u554a"}]

pprint.pprint(json.loads(df.to_json(orient='records')), width=40)
# [{'col1': 1, 'col2': 'a'},
#  {'col1': 2, 'col2': 'x'},
#  {'col1': 3, 'col2': '啊'}]

JSON Lines(.jsonl)

如果参数 orient='records,并且参数 lines=True,它将是一个字符串,每个 {column: value} 都有一个换行符。

print(df.to_json(orient='records', lines=True))
# {"col1":1,"col2":"a"}
# {"col1":2,"col2":"x"}
# {"col1":3,"col2":"\u554a"}

index

{index -> {column -> value}}

print(df.to_json(orient='index'))
# {"row1":{"col1":1,"col2":"a"},"row2":{"col1":2,"col2":"x"},"row3":{"col1":3,"col2":"\u554a"}}

pprint.pprint(json.loads(df.to_json(orient='index')))
# {'row1': {'col1': 1, 'col2': 'a'},
#  'row2': {'col1': 2, 'col2': 'x'},
#  'row3': {'col1': 3, 'col2': '啊'}}

columns(默认值)

{column -> {index -> value}}

如果省略了 orient 参数(默认),则为这种格式。

print(df.to_json(orient='columns'))
# {"col1":{"row1":1,"row2":2,"row3":3},"col2":{"row1":"a","row2":"x","row3":"\u554a"}}

pprint.pprint(json.loads(df.to_json(orient='columns')))
# {'col1': {'row1': 1, 'row2': 2, 'row3': 3},
#  'col2': {'row1': 'a', 'row2': 'x', 'row3': '啊'}}

values

print(df.to_json(orient='values'))
# [[1,"a"],[2,"x"],[3,"\u554a"]]

pprint.pprint(json.loads(df.to_json(orient='values')))
# [[1, 'a'], [2, 'x'], [3, '啊']]

table

一种包含数据结构方案信息的格式。文章来源地址https://www.toymoban.com/news/detail-612186.html

print(df.to_json(orient='table'))
# {"schema": {"fields":[{"name":"index","type":"string"},{"name":"col1","type":"integer"},{"name":"col2","type":"string"}],"primaryKey":["index"],"pandas_version":"0.20.0"}, "data": [{"index":"row1","col1":1,"col2":"a"},{"index":"row2","col1":2,"col2":"x"},{"index":"row3","col1":3,"col2":"\u554a"}]}

pprint.pprint(json.loads(df.to_json(orient='table')))
# {'data': [{'col1': 1, 'col2': 'a', 'index': 'row1'},
#           {'col1': 2, 'col2': 'x', 'index': 'row2'},
#           {'col1': 3, 'col2': '啊', 'index': 'row3'}],
#  'schema': {'fields': [{'name': 'index', 'type': 'string'},
#                        {'name': 'col1', 'type': 'integer'},
#                        {'name': 'col2', 'type': 'string'}],
#             'pandas_version': '0.20.0',
#             'primaryKey': ['index']}}

到了这里,关于55_Pandas.DataFrame 转换为 JSON 字符串/文件并保存 (to_json)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Pandas中的字符串和时间转换与格式化

    Pandas 提供了若干个函数来格式化时间。 其中,最常用的是 to_datetime() 函数。 可以使用 to_datetime() 函数将一个字符串解析为时间,并指定字符串的格式。例如: 输出: 还可以使用 strftime() 函数将时间格式化为字符串。例如: 输出: 如果想要格式化某一列中的时间,可以使用

    2024年02月04日
    浏览(43)
  • Java中如何将字符串转换为JSON格式字符串

    Java中如何将字符串转换为JSON格式字符串 在Java编程中,我们经常需要处理JSON数据格式。有时候,我们需要将一个普通的字符串转换为JSON格式的字符串。幸运的是,Java提供了多种方法来实现这个目标。在本文中,我将介绍两种常见的方法来将字符串转换为JSON格式字符串。 方

    2024年02月06日
    浏览(56)
  • Json对象和Json字符串之间相互转换

    作为前端开发,在和后端进行联调接口时,总会遇到要求传JSON字符串或是JSON对象,或者是返回值里是JSON字符串要在页面上展示JSON对象这种情况,都需要前端开发人员对Json对象和Json对象进行相互转换,得到想要的结果。 废话不多说,直接上干货: 1.首先定义一个Json对象:

    2024年02月11日
    浏览(57)
  • Python 字符串转换为 JSON

    Python 字符串转换为 JSON JSON(JavaScript Object Notation)是一种常用的数据交换格式,它以文本形式表示结构化的数据,并且易于阅读和编写。在Python中,可以使用内置的json模块来将字符串转换为JSON格式。本文将介绍如何将Python字符串转换为JSON,并提供相应的源代码示例。 首先

    2024年02月06日
    浏览(52)
  • 52_Pandas处理日期和时间列(字符串转换、日期提取等)

    将解释如何操作表示 pandas.DataFrame 的日期和时间(日期和时间)的列。字符串与 datetime64[ns] 类型的相互转换,将日期和时间提取为数字的方法等。 以下内容进行说明。 如何将 datetime64[ns] 类型指定为索引并将其处理为时序数据以及如何使用,请参考以下文章。 26_Pandas.DataFr

    2024年01月22日
    浏览(49)
  • java将json字符串转换成json数组

    有些时候我们需要将json字符串转换成数组,并且只取一些属性值进行下一个方法的赋值,这样就涉及到了json字符串的转换了, json字符串有两种形式,一种是以{A,B,C},一种是[{A},{B},{C}]。但是很多时候是这两种的结合。 首先导入jar包 如果是第一种只需要加入以下代码,注意

    2024年02月11日
    浏览(53)
  • 将json字符串与实体类互相转换

    如果我们接收到的是一个json字符串,我们该如何对该字符串进行解析? 方式一:使用实体类进行解析 方式二:使用map进行解析 使用的依赖jar包: fastjson 使用实体类进行解析 创建一个用于接收的实体类:使用json字符串中的那些字段,实体类的属性值一定要和JSON串中的 key

    2024年02月09日
    浏览(51)
  • 将对象转换为JSON字符串,即手写JSON.stringify

    分析: Date将转为string undefined、Symbol会直接过滤掉,但如果是数组项是undefined、Symbol、Function,那么则返回null 正则RegExp会返回空对象{} NaN、Function、null会返回null,但是呢,function会被过滤掉 Infinity会转为null 如果是数组的话,返回的是数组的序列化 string返回原始值 number、b

    2024年02月11日
    浏览(44)
  • java对象与Json字符串的相互转换

    文章目录 1.Json对象转换为java 对象 2. Java对象转换JSON 1.Json对象转换为java 对象 导入jackson的相关jar包 创建Jackson核心对象 ObjectMapper 调用ObjectMapper的相关方法进行转换 2. Java对象转换JSON 常见的解析器:Jsonlib,Gson,fastjson,jackson 1.导入jackson的相关jar包 2.创建Jackson核心对象 Obj

    2024年02月09日
    浏览(58)
  • 微信小程序开发——json对象和字符串转换

    JSON对象和字符串的互转 注意事项 1、JSON操作时一定要保证是JSON格式的字符串,或对象。 报错如下: 原代码 1)JSON对象转字符串 2)JSON字符串转对象 解决:JSON字符串转对象时,字符串值应该是 跳转设置是:“…?item=”+jsonstr,即字符参数是 item ,所以转换时要取值 options

    2024年02月11日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包