解决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 相关文章推荐
低版本中Python除法运算小技巧
Apr 05 Python
Python中格式化format()方法详解
Apr 01 Python
Python实现爬取百度贴吧帖子所有楼层图片的爬虫示例
Apr 26 Python
对pandas处理json数据的方法详解
Feb 08 Python
python字符串分割及字符串的一些常规方法
Jul 24 Python
django多对多表的创建,级联删除及手动创建第三张表
Jul 25 Python
Django 迁移、操作数据库的方法
Aug 02 Python
python批量修改ssh密码的实现
Aug 08 Python
wxPython绘图模块wxPyPlot实现数据可视化
Nov 19 Python
python实现超市商品销售管理系统
Nov 22 Python
Python 将 QQ 好友头像生成祝福语的实现代码
May 03 Python
推荐技术人员一款Python开源库(造数据神器)
Jul 08 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实现Ftp用户的在线管理
2012/02/16 PHP
解析php中mysql_connect与mysql_pconncet的区别详解
2013/05/15 PHP
详细解读php的命名空间(二)
2018/02/21 PHP
PHP的mysqli_stat()函数讲解
2019/01/23 PHP
PHP count_chars()函数讲解
2019/02/14 PHP
关于文本限制字数的js代码
2007/04/02 Javascript
javascript下判断一个元素是否存在的代码
2010/03/05 Javascript
使用按钮控制以何种方式打开新窗口的属性介绍
2012/12/17 Javascript
深入剖析JavaScript:Object类型
2016/05/10 Javascript
JQuery学习总结【一】
2016/12/01 Javascript
手把手搭建安装基于windows的Vue.js运行环境
2017/06/12 Javascript
nodejs 最新版安装npm 的使用详解
2018/01/18 NodeJs
Vue数据双向绑定底层实现原理
2019/11/22 Javascript
viewer.js一个强大的基于jQuery的图像查看插件(支持旋转、缩放)
2020/04/01 jQuery
小程序分享链接onShareAppMessage的具体用法
2020/05/22 Javascript
Vue3配置axios跨域实现过程解析
2020/11/25 Vue.js
Python中用于去除空格的三个函数的使用小结
2015/04/07 Python
Python中的各种装饰器详解
2015/04/11 Python
Python基于生成器迭代实现的八皇后问题示例
2018/05/23 Python
python实现二维插值的三维显示
2018/12/17 Python
详解Python中的正斜杠与反斜杠
2019/08/09 Python
DJango的创建和使用详解(默认数据库sqlite3)
2019/11/18 Python
浅谈在django中使用redirect重定向数据传输的问题
2020/03/13 Python
matplotlib基础绘图命令之bar的使用方法
2020/08/13 Python
Python入门基础之数字字符串与列表
2021/02/01 Python
python爬虫beautifulsoup库使用操作教程全解(python爬虫基础入门)
2021/02/19 Python
canvas实现滑动验证的实现示例
2020/08/11 HTML / CSS
旅游管理专业个人求职信范文
2013/12/24 职场文书
摄影展策划方案
2014/06/02 职场文书
个人委托书范本汇总
2014/10/01 职场文书
2014年党建工作总结
2014/11/11 职场文书
瞿秋白纪念馆观后感
2015/06/10 职场文书
Pandas 稀疏数据结构的实现
2021/07/25 Python
教你利用Nginx 服务搭建子域环境提升二维地图加载性能的步骤
2021/09/25 Servers
Arthas排查Kubernetes中应用频繁挂掉重启异常
2022/02/28 MySQL
win10蓝屏0xc0000001安全模式进不了怎么办?win10出现0xc0000001的解决方法
2022/08/05 数码科技