DataFrame转化为json的方法教程

news2024/10/7 14:29:05

网络上有好多的教程,讲得不太清楚和明白,我用实际的例子说明了一下内容,附档代码,方便理解和使用 

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) [source]

将对象转换为JSON字符串。

注意:NaNNone将被转换为nulldatetime对象将被转换为UNIX时间戳。

参数:

path_or_buf :str 或 file handle, 默认为 None

文件路径或对象。如果未指定,则结果以字符串形式返回。

orient :str

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

1) Series:

默认值为‘index’

允许的值为:{'split','records','index','table'}

2) DataFrame:

默认为‘columns’

允许的值为:

{'split','records','index','columns','values','table'}

3) JSON字符串格式:

'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}}的字典

描述数据,其中数据成分类似于orient='records'

在版本0.20.0中更改。

date_format :{None, ‘epoch’, ‘iso’}

日期转换的类型。'epoch'= epoch milliseconds

'iso'= ISO8601。默认值取决于orient

对于 orient='table',默认值为'iso'

对于所有其他东方,默认值为‘epoch’.。

double_precision :int, 默认为10

在对浮点值进行编码时要使用的小数位数。

force_ascii :bool, 默认为True

强制将字符串编码为ASCII

date_unit :str,默认为“ms”(毫秒)

要编码的时间单位,控制时间戳和ISO8601精度。

“s”,“ms”,“us”,“ns”之一分别表示秒,毫秒,微秒和纳秒。

default_handler :callable, 默认为None

如果对象不能转换为适合JSON的格式,则调用。

应该接收一个参数,该参数是要转换的对象并返回一个可序列化对象。

lines :bool, 默认为 False

如果'orient''records',则写出行分隔的json格式。

如果不正确的‘orient’将抛出ValueError,因为其他人没有列出。

compression :{‘infer’, ‘gzip’, ‘bz2’, ‘zip’, ‘xz’, None}

表示要在输出文件中使用的压缩的字符串,

仅在第一个参数是文件名时使用。默认情况下,

压缩是从文件名推断出来的。

在0.24.0版本中更改:增加了“infer”选项并将其设置为默认

index :bool, 默认为 True

是否在JSON字符串中包括索引值。

仅当Orient“split”“table”时,

才支持不包括index(index=False)。

0.23.0版中的新功能。

indent int, 可选

用于缩进每条记录的空白长度。

1.0.0版的新功能。。

返回值:

None 或 str

如果path_or_bufNone

则将生成的json格式作为字符串返回。

否则返回None

Notes

indent=0的行为与stdlib不同,stdlib不会缩进输出,但会插入新行。目前,在panda中,indent=0和默认的indent=None是等价的,不过在将来的版本中可能会更改。

df = pd.DataFrame( [["A0001", "张三"], ["A0002", "李四"]], index=["row 1", "row 2"],columns=["工号", "姓名"] )
print('-------------------------------------------')
print(df)
print('index')
print(df.to_json(orient='index',force_ascii=False))
print('columns')
print(df.to_json(orient='columns',force_ascii=False))
print('split')
print(df.to_json(orient='split',force_ascii=False))
print('records')
print(df.to_json(orient='records',force_ascii=False))
mydate={"parts":df.to_json(orient='records',force_ascii=False)}
print(mydate)
print('table')
print(df.to_json(orient='table',force_ascii=False))
print('values')
print(df.to_json(orient='values',force_ascii=False))
print('-------------------------------------------')
#遍历
for index, row in df.iterrows():
    print(index)
    print(row)

输出内容,理解转化在json的内容的逻辑

-------------------------------------------
          工号  姓名
row 1  A0001  张三
row 2  A0002  李四
index
{"row 1":{"工号":"A0001","姓名":"张三"},"row 2":{"工号":"A0002","姓名":"李四"}}
columns
{"工号":{"row 1":"A0001","row 2":"A0002"},"姓名":{"row 1":"张三","row 2":"李四"}}
split
{"columns":["工号","姓名"],"index":["row 1","row 2"],"data":[["A0001","张三"],["A0002","李四"]]}
records
[{"工号":"A0001","姓名":"张三"},{"工号":"A0002","姓名":"李四"}]
{'parts': '[{"工号":"A0001","姓名":"张三"},{"工号":"A0002","姓名":"李四"}]'}
table
{"schema":{"fields":[{"name":"index","type":"string"},{"name":"工号","type":"string"},{"name":"姓名","type":"string"}],"primaryKey":["index"],"pandas_version":"1.4.0"},"data":[{"index":"row 1","工号":"A0001","姓名":"张三"},{"index":"row 2","工号":"A0002","姓名":"李四"}]}
values
[["A0001","张三"],["A0002","李四"]]
-------------------------------------------
row 1
工号    A0001
姓名       张三
Name: row 1, dtype: object
row 2
工号    A0002
姓名       李四
Name: row 2, dtype: object

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/45624.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

考研数据结构大题整合_组一(ZYL组)

考研数据结构大题整合 目录考研数据结构大题整合一、ZYL组ZYL组一ZYL组二ZYL组三ZYL组四ZYL组五ZYL组六ZYL组七ZYL组八一、ZYL组 ZYL组一 1.一棵树有度为i的结点ni 个(i1,2,3,…m), 求叶结点的个数.(10分) 2、已知带权连通图G(V,E)的邻接表如图所示&am…

rubbitmq 图形界面使用 常用六种通信模式 Simple-Work-fanout-direct-topic-headers

阿里云服务器添加rubbitmq需要开启端口:rabbitmq阿里云服务器开放端口号 Rubbitmq地址: 服务器地址:15672 1.简单模式Simple 一个生产者、一个消费者,不需要设置交换机(使用默认的交换机) 2.工作队列模式Work Queue 一个生产者、多个消费者&a…

windows操作系统双网卡问题处理办法

windows操作系统双网卡问题处理办法(详解)一、命令说明二、处理办法1.设置外网网关为默认网关2.查看当前路由表3.删除缺省路由4.添加访问外网的缺省路由5.添加访问内网的路由信息一、命令说明 显示 IP 路由表的信息 route print显示 IP 路由表中以 192…

3.7.3、ARP协议(网际层)

地址解析协议 ARP 1、工作原理 在共享总线型的以太网中 为了简单起见:只有各主机所配置的 IP 地址和其网卡上固化的 MAC 地址 假设主机 B 要给主机 C 发送数据包 主机 B 知道主机 C 的 IP 地址,但是不知道 C 的 MAC 地址 因此,主机 B 的…

使用 Bytebase 管理 Rainbond 上的应用数据库

在应用的发布过程中数据库的结构变更一直是最复杂也是风险最大的环节,而 Bytebase 可以对这一过程进行全生命周期的管理。在 Rainbond 中安装 Bytebase,轻松管理部署在 Rainbond 上的所有数据库。 Bytebase 是什么? Bytebase 是一个开源的数…

linux驱动 usb转串口ch344 改变读取缓冲区大小

开发环境 核心板:IMX6 内核版本:linux4.1.5 问题 通过USB扩展出来的串口接收数据会出现截断现象,而且每次截断的大小都一样。而核心板提供的串口UART就没有这个现象。 核心板自带串口正常的现象: 扩展串口异常现象&#xff1a…

【软件测试】8年资深测试说出来我们的心声......

目录:导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜)前言 执着于手动的功能测…

VLAN划分-----计算机网络

拓扑图 LSW1与LSW2都是三层交换机,现在两台交换机分别连着两台pc。 其中: LSW1的0/0/1端口连着pc1,0/0/2连着pc2,0/0/3端口连着lsw2。 LSW2的0/0/1端口连着pc3,0/0/2连着pc4,0/0/3端口连着lsw1。 不同vlan…

pycharm opencv无法自动补全

我的环境 python 3.6.9opencv-python 4.4.0.42opencv-contrib-python 4.6.66ubuntu 18.04 LTSpycharm 2020.3.2 解决方案 首先找到cv2的site-packagespip3 show opencv-python进入到该目录, 复制so结尾文件至上级目录: cp cv2.cpython-36m-x86_64-linux-gnu.so ../等待pych…

基于粒子群算法和遗传算法优化的高速列车横向悬挂

目录 前言 1.高速列车模型 2.优化算法优化模糊PID流程 3.普通PID、优化算法模糊PID仿真对比 3.1 模糊控制器设计 3.2 仿真结果 3.2.1粒子群优化PID 3.2.2粒子群优化模糊PID 3.2.3遗传算法优化模糊PID 4.总结 前言 高速列车,是指最高行驶速度在200km/h 及以…

二、【React-Router5】路由的基本使用

文章目录1、写在前面的总结2、效果图3、项目结构4、CODE4.1、index.js4.2、App.js4.3、About.jsx4.4、Home.jsx5、Result6、路由组件与一般组件7、Link 升级 NavLink8、封装NavLink8.1、MyNavLink.jsx8.2、修改上面4.2部分代码1、写在前面的总结 明确好界面中的导航区、展示区…

火山引擎数智平台:CDP产品要能与多方联动

更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群 CDP(Customer Data Platform,客户数据平台)市场将迎来新一轮的高速增长。 国际数据公司(以下简称“IDC”&#xff0…

[附源码]Python计算机毕业设计SSM流浪猫狗救助站(程序+LW)

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

ofxTimeMeasurements——OpenFrameworks插件,可以轻松测量C++代码任何部分的执行时间

一、简介 ofxTimeMeasurements是一款用于OpenFrameworks 开源C框架的插件,可以让使用者轻松测量C代码任何部分的执行时间。其优势在于以图形化的方式显示代码执行时间。效果如下: 只是它必须依赖OpenFrameworks,所以如果你不用这个框架&…

《Head First HTML5 javascript》第10章 自定义对象

2022.11.23 第10章 自定义对象 面向对象OOP(Object Oriented Programming) 对象是一个包含相关数据和方法的集合(通常由一些变量和函数组成,我们称之为对象里面的属性和方法)对象是存储在单个分组中的相关功能的集合。在 JavaScript 中&…

第二证券|多只公募基金损失惨重;储能板块低开高走

今天早盘,A股大幅低开,上证50指数直接跳空跌破2500点,最多跌逾3%,创业板指亦跌破2300点整数关口。 盘面上,酒店餐饮、旅游、储能、ST等板块逆势活跃,酿酒、工程机械、互联网、证券等板块跌幅居前。北上资金…

【LeetCode每日一题:1758. 生成交替二进制字符串的最少操作数~~~模拟+遍历+计数】

题目描述 给你一个仅由字符 ‘0’ 和 ‘1’ 组成的字符串 s 。一步操作中,你可以将任一 ‘0’ 变成 ‘1’ ,或者将 ‘1’ 变成 ‘0’ 。 交替字符串 定义为:如果字符串中不存在相邻两个字符相等的情况,那么该字符串就是交替字符…

KVM虚拟机热扩容

创建一个虚拟机用于练习在线扩容 virt-install --name centos8-3 --memory 4096,currentMemory1024 --vcpus 2,maxvcpus8 --disk /var/lib/libvirt/images/centos8-3.qcow2,busvirtio,formatqcow2 --import --os-variant rhel8.0 --graphics vnc --network networkdefault…

Docker-JenKins安装及配置!

Jenkins官网:Jenkins 安装主机配置(官方): 最低: 256 MB 内存 1 GB 的驱动器空间(尽管如果将 Jenkins 作为 Docker 容器运行,则建议至少 10 GB) 小团队推荐: 4 GB …

针对支付宝-当面付实现的个人支付

测试地址 项目背景 为什么想做这个 一是工作中也接触到了支付宝,微信支付方面,二是自己也想弄个收费服务,比如之后做的程序想收费可以直接让用户扫码支付,而不用微信交流了。 了解什么支付适合个人支付 微信支付:需要…