解决Pandas to_json()中文乱码,转化为json数组的问题


Posted in Python onMay 10, 2018

问题出现与解决

Pandas进行数据处理之后,假如想将其转化为json,会出现一个bug,就是中文文字是以乱码存储的,也就是\uXXXXXX的形式,翻了翻官网文档,查了源码的参数,(多谢网友提醒)需要设置js001 = df1.to_json(force_ascii=False),即可显示中文编码

解决Pandas to_json()中文乱码,转化为json数组的问题

以下是原文的额外内容,DataFrame 转化为json数组

于是决定自己写一个.首先用demojson的类库尝试了一下,不行,依旧编码问题.之后考虑python 原生的 json 应该有编码转换功能,查了查官网文档,确实可以,不过要比平时多加一个参数

listXY_json = json.dumps(listXY, sort_keys=True, indent=4, ensure_ascii=False) #ensure_ascii:默认值True,如果数据中含有非ASCII的字符,则会类似\uXXXX的显示数据,设置成False后,就能正常显示

既然找到解决乱码的方法,那么想要将pandas中的数据类型存储到json中就只需要先将其转换为python自带的数据类型,再利用 json 类库其转换为json格式并存储就可以了,因为我自己是为了将python处理好的数据转换为json数组,然后利用echarts生成表格,所以我将其封装为了一个类,源码在最后

存储的的json前后对比

df1 = pd.DataFrame(pd.read_excel(u'excel/袁隆平院士报告处理后.xlsx'))
js001 = df1.to_json(force_ascii=False)
with open('json/testjson.json', 'w') as f:
 f.write(js001)
# "16":6,"17":6,"18":3,"19":4},"content":{"0":"研究调改王玉田院士项目入驻协议,完成签约仪式方案","1":"\u5b
#处理后
df1 = pd.DataFrame(pd.read_excel(u'excel/袁隆平院士报告处理后.xlsx'))
dfts = DataFrameToJSONArray(df1, 'json/wyt_xyz.json') # 参数(df数据,文件存储路径)
dfts.funChangeDataFrameType() # 自动转换DataFrame的列数据类型
dfts.funSaveJSONArrayFile() # 存储JSON格式文件
# [["2016-08-08", "袁隆平院士观摩指导"], ["2016-08-09","修改完善袁隆平院士项目合作协议"],["2016-08-10","完成袁隆平院士合作协议"],["2016-08-31","袁隆平院士项目入驻院士港协议审核完毕"],....]

DataFrameToJSONArray()源码

# - * - coding: utf - 8 -*-
#
# 作者:田丰(FontTian)
# 创建时间:'2017/7/16'
# 邮箱:fonttian@Gmaill.com
# CSDN:http://blog.csdn.net/fontthrone
import sys
import pandas as pd
import json
import re
reload(sys)
sys.setdefaultencoding('utf-8')
class DataFrameToJSONArray():
  def __init__(self, dataframe, filepath='DataFrameToJSONArrayFile.json'):
    self.__DataFrame = dataframe
    self.__FilePath = filepath
  def funChangeDataFrameType(self):
    for i in range(len(self.__DataFrame.columns)):
      s = re.sub(r'\'>', '', re.sub(r'\d', '', str(type(self.__DataFrame.iloc[:, i][0])))).replace('\'', ' ').replace('.',
                                                        ' ').split(
        ' ')[-1]
      if s == 'Timestamp':
        self.__DataFrame.iloc[:, i] = self.__DataFrame.iloc[:, i].astype(unicode)
      else:
        self.__DataFrame.iloc[:, i] = self.__DataFrame.iloc[:, i].astype(s)
    return self.__DataFrame
  def funSaveJSONArrayFile(self):
    list001 = []
    for i in range(len(self.__DataFrame.columns)):
      list001.append(list(self.__DataFrame.iloc[:, i]))
    list002 = []
    list003 = []
    for i in range(len(list001[0])):
      for j in range(len(self.__DataFrame.columns)):
        list003.append(list001[j][i])
      list002.append(list003)
      list003 = []
    Final_JSON = json.dumps(list002, sort_keys=True, indent=4, ensure_ascii=False)
    with open(self.__FilePath, 'w') as f:
      f.write(Final_JSON)
    return Final_JSON

def init(self, dataframe, filepath='DataFrameToJSONArrayFile.json') dataframe需要传入的数据,filepath,json文件存储路径

funChangeDataFrameType() 自动转换DataFrame数据类型,返回转换后的DataFrame

funSaveJSONArrayFile() 保存文件

以上这篇解决Pandas to_json()中文乱码,转化为json数组的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Windows下Eclipse+PyDev配置Python+PyQt4开发环境
May 17 Python
查看TensorFlow checkpoint文件中的变量名和对应值方法
Jun 14 Python
详解Django-restframework 之频率源码分析
Feb 27 Python
python三方库之requests的快速上手
Mar 04 Python
Python合并2个字典成1个新字典的方法(9种)
Dec 19 Python
PyCharm中Matplotlib绘图不能显示UI效果的问题解决
Mar 12 Python
Python 操作 PostgreSQL 数据库示例【连接、增删改查等】
Apr 21 Python
keras 多gpu并行运行案例
Jun 10 Python
python操作微信自动发消息的实现(微信聊天机器人)
Jul 14 Python
Anaconda+spyder+pycharm的pytorch配置详解(GPU)
Oct 18 Python
python 通过exifread读取照片信息
Dec 24 Python
Python OpenCV实现传统图片格式与base64转换
Jun 13 Python
解决python3 json数据包含中文的读写问题
May 10 #Python
Python3.6通过自带的urllib通过get或post方法请求url的实例
May 10 #Python
对python3 urllib包与http包的使用详解
May 10 #Python
Python3处理HTTP请求的实例
May 10 #Python
python字符串与url编码的转换实例
May 10 #Python
Python中的单继承与多继承实例分析
May 10 #Python
python3处理含有中文的url方法
May 10 #Python
You might like
PHP调用三种数据库的方法(1)
2006/10/09 PHP
PHP 出现乱码和Sessions验证问题的解决方法!
2008/12/06 PHP
关于PHPDocument 代码注释规范的总结
2013/06/25 PHP
Yii2框架自定义验证规则操作示例
2019/02/08 PHP
基于jquery实现的上传图片及图片大小验证、图片预览效果代码
2011/04/12 Javascript
5个最佳的Javascript日期处理类库分享
2012/04/15 Javascript
原生Js实现元素渐隐/渐现(原理为修改元素的css透明度)
2013/06/24 Javascript
使用jQuery插件创建常规模态窗口登陆效果
2013/08/23 Javascript
js获取url参数值的两种方式
2013/09/10 Javascript
使用javascript实现页面定时跳转总结篇
2013/09/21 Javascript
用js通过url传参把数据从一个页面传到另一个页面
2014/09/01 Javascript
基于BootStrap Metronic开发框架经验小结【五】Bootstrap File Input文件上传插件的用法详解
2016/05/12 Javascript
辨析JavaScript中的Undefined类型与null类型
2016/05/26 Javascript
jQuery实现标签页效果实战(4)
2017/02/08 Javascript
javascript事件的绑定基础实例讲解(34)
2017/02/14 Javascript
基于JavaScript实现的希尔排序算法分析
2017/04/14 Javascript
Node.js+Express+MySql实现用户登录注册功能
2017/07/10 Javascript
ES6扩展运算符用法实例分析
2017/10/31 Javascript
vue项目引入ts步骤(小结)
2019/10/31 Javascript
antd 表格列宽自适应方法以及错误处理操作
2020/10/27 Javascript
Vue 数据响应式相关总结
2021/01/28 Vue.js
[43:43]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第三场 11.29
2020/12/02 DOTA
python发送邮件的实例代码(支持html、图片、附件)
2013/03/04 Python
python PyTorch预训练示例
2018/02/11 Python
彻底搞懂 python 中文乱码问题(深入分析)
2020/02/28 Python
python 发送邮件的示例代码(Python2/3都可以直接使用)
2020/12/03 Python
Mamas & Papas沙特阿拉伯:英国最受欢迎的婴儿品牌
2017/11/20 全球购物
整个世界的设计师家具在哈恩:Designathome
2019/03/25 全球购物
德国二手设计师时装和复古时装跳蚤市场:Mädchenflohmarkt
2020/11/09 全球购物
大学生职业生涯规划范文
2014/01/08 职场文书
小学开学寄语
2014/01/19 职场文书
思想品德自我评价
2014/02/04 职场文书
篮球兴趣小组活动总结
2014/07/07 职场文书
出生公证书
2015/01/23 职场文书
MySql子查询IN的执行和优化的实现
2021/08/02 MySQL
sql注入教程之类型以及提交注入
2021/08/02 MySQL