解决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实用技巧两则
Aug 29 Python
Python中用format函数格式化字符串的用法
Apr 08 Python
python基础入门学习笔记(Python环境搭建)
Jan 13 Python
python监控文件并且发送告警邮件
Jun 21 Python
Python数据预处理之数据规范化(归一化)示例
Jan 08 Python
将python图片转为二进制文本的实例
Jan 24 Python
详解pyppeteer(python版puppeteer)基本使用
Jun 12 Python
Pytorch之parameters的使用
Dec 31 Python
python实现简单坦克大战
Mar 27 Python
Python-jenkins模块之folder相关操作介绍
May 12 Python
Python3通过chmod修改目录或文件权限的方法示例
Jun 08 Python
python接口测试返回数据为字典取值方式
Feb 12 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加速 eAccelerator配置和使用指南
2009/06/05 PHP
php网页标题中文乱码的有效解决方法
2014/03/05 PHP
php实现的双向队列类实例
2014/09/24 PHP
PHP通过CURL实现定时任务的图片抓取功能示例
2016/10/03 PHP
ThinkPHP实现简单登陆功能
2017/04/28 PHP
Jquery中children与find之间的区别详细解析
2013/11/29 Javascript
jquery如何获取复选框的值
2013/12/12 Javascript
javascript获取鼠标点击元素对象(示例代码)
2013/12/20 Javascript
ECMAScript5(ES5)中bind方法使用小结
2015/05/07 Javascript
JavaScript获取当前运行脚本文件所在目录的方法
2016/02/03 Javascript
JavaScript仿商城实现图片广告轮播实例代码
2016/02/06 Javascript
jquery checkbox的相关操作总结
2016/10/17 Javascript
MUI 实现侧滑菜单及其主体部分上下滑动的方法
2018/01/25 Javascript
Webpack 之 babel-loader文件预处理器详解
2018/03/23 Javascript
ES6中Set和Map用法实例详解
2020/03/02 Javascript
详解在IDEA中将Echarts引入web两种方式(使用js文件和maven的依赖导入)
2020/07/11 Javascript
[01:32]完美世界DOTA2联赛10月29日精彩集锦
2020/10/30 DOTA
Python实现的生成自我描述脚本分享(很有意思的程序)
2014/07/18 Python
Python应用03 使用PyQT制作视频播放器实例
2016/12/07 Python
Python之Web框架Django项目搭建全过程
2017/05/02 Python
浅谈Python用QQ邮箱发送邮件时授权码的问题
2018/01/29 Python
Tensorflow 实现分批量读取数据
2020/01/04 Python
python GUI库图形界面开发之PyQt5浏览器控件QWebEngineView详细使用方法
2020/02/26 Python
python 双循环遍历list 变量判断代码
2020/05/04 Python
使用keras根据层名称来初始化网络
2020/05/21 Python
python3代码输出嵌套式对象实例详解
2020/12/03 Python
电子商务专业个人的自我评价
2013/12/19 职场文书
应聘医药销售自荐书范文
2014/02/08 职场文书
高三学生评语大全
2014/04/25 职场文书
吨的认识教学反思
2014/04/27 职场文书
优秀教师演讲稿
2014/05/06 职场文书
小学见习报告
2014/10/31 职场文书
国富论读书笔记
2015/06/26 职场文书
辅导员学期工作总结
2015/08/14 职场文书
关于拾金不昧的感谢信(五篇)
2019/10/18 职场文书
MySQL学习必备条件查询数据
2022/03/25 MySQL