日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

Pandas to_json() 中文乱码,转化为json数组

發(fā)布時(shí)間:2025/3/21 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Pandas to_json() 中文乱码,转化为json数组 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

問題出現(xiàn)與解決

Pandas進(jìn)行數(shù)據(jù)處理之后,假如想將其轉(zhuǎn)化為json,會(huì)出現(xiàn)一個(gè)bug,就是中文文字是以亂碼存儲(chǔ)的,也就是\uXXXXXX的形式,首先要解決的就是中文亂碼的問題:翻了翻官網(wǎng)文檔,查了源碼的參數(shù),(多謝網(wǎng)友提醒)需要設(shè)置js001 = df1.to_json(force_ascii=False),即可顯示中文編碼

然后需要解決的是df轉(zhuǎn)json數(shù)組,這個(gè)必須得自己寫。

DataFrame 轉(zhuǎn)化為json數(shù)組

首先用demojson的類庫(kù)嘗試了一下,不行,依舊編碼問題(當(dāng)時(shí)還沒查到參數(shù)force_ascii,于是決定使用原生代碼完全自己寫,這樣就可以在數(shù)據(jù)類型轉(zhuǎn)換的同時(shí),順便解決亂碼的問題).之后考慮python 原生的 json 應(yīng)該有編碼轉(zhuǎn)換功能,查了查官網(wǎng)文檔,確實(shí)可以,不過要比平時(shí)多加一個(gè)參數(shù)

listXY_json = json.dumps(listXY, sort_keys=True, indent=4, ensure_ascii=False) #ensure_ascii:默認(rèn)值True,如果數(shù)據(jù)中含有非ASCII的字符,則會(huì)類似\uXXXX的顯示數(shù)據(jù),設(shè)置成False后,就能正常顯示

既然找到解決亂碼的方法,那么想要將pandas中的數(shù)據(jù)類型存儲(chǔ)到j(luò)son中就只需要先將其轉(zhuǎn)換為python自帶的數(shù)據(jù)類型,再利用 json 類庫(kù)其轉(zhuǎn)換為json格式并存儲(chǔ)就可以了,因?yàn)槲易约菏菫榱藢ython處理好的數(shù)據(jù)轉(zhuǎn)換為json數(shù)組,然后利用echarts生成表格,所以我將其封裝為了一個(gè)類,源碼在最后

存儲(chǔ)的的json前后對(duì)比

df1 = pd.DataFrame(pd.read_excel(u'excel/袁隆平院士報(bào)告處理后.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":"研究調(diào)改王玉田院士項(xiàng)目入駐協(xié)議,完成簽約儀式方案","1":"\u5b#處理后 df1 = pd.DataFrame(pd.read_excel(u'excel/袁隆平院士報(bào)告處理后.xlsx')) dfts = DataFrameToJSONArray(df1, 'json/wyt_xyz.json') # 參數(shù)(df數(shù)據(jù),文件存儲(chǔ)路徑) dfts.funChangeDataFrameType() # 自動(dòng)轉(zhuǎn)換DataFrame的列數(shù)據(jù)類型 dfts.funSaveJSONArrayFile() # 存儲(chǔ)JSON格式文件# [["2016-08-08", "袁隆平院士觀摩指導(dǎo)"], ["2016-08-09","修改完善袁隆平院士項(xiàng)目合作協(xié)議"],["2016-08-10","完成袁隆平院士合作協(xié)議"],["2016-08-31","袁隆平院士項(xiàng)目入駐院士港協(xié)議審核完畢"],....]

DataFrameToJSONArray()源碼

# - * - coding: utf - 8 -*- # # 作者:田豐(FontTian) # 創(chuàng)建時(shí)間:'2017/7/16' # 郵箱:fonttian@Gmaill.com # CSDN:http://blog.csdn.net/fontthrone import sys import pandas as pd import json import rereload(sys) sys.setdefaultencoding('utf-8')class DataFrameToJSONArray():def __init__(self, dataframe, filepath='DataFrameToJSONArrayFile.json'):self.__DataFrame = dataframeself.__FilePath = filepathdef 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.__DataFramedef 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需要傳入的數(shù)據(jù),filepath,json文件存儲(chǔ)路徑
  • funChangeDataFrameType() 自動(dòng)轉(zhuǎn)換DataFrame數(shù)據(jù)類型,返回轉(zhuǎn)換后的DataFrame
  • funSaveJSONArrayFile() 保存文件
《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

總結(jié)

以上是生活随笔為你收集整理的Pandas to_json() 中文乱码,转化为json数组的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。