国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

解決Pandas to_json()中文亂碼,轉(zhuǎn)化為json數(shù)組的問題

2020-02-23 00:04:44
字體:
供稿:網(wǎng)友

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

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

以下是原文的額外內(nèi)容,DataFrame 轉(zhuǎn)化為json數(shù)組

于是決定自己寫一個.首先用demojson的類庫嘗試了一下,不行,依舊編碼問題.之后考慮python 原生的 json 應該有編碼轉(zhuǎn)換功能,查了查官網(wǎng)文檔,確實可以,不過要比平時多加一個參數(shù)

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

既然找到解決亂碼的方法,那么想要將pandas中的數(shù)據(jù)類型存儲到json中就只需要先將其轉(zhuǎn)換為python自帶的數(shù)據(jù)類型,再利用 json 類庫其轉(zhuǎn)換為json格式并存儲就可以了,因為我自己是為了將python處理好的數(shù)據(jù)轉(zhuǎn)換為json數(shù)組,然后利用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":"研究調(diào)改王玉田院士項目入駐協(xié)議,完成簽約儀式方案","1":"/u5b#處理后df1 = pd.DataFrame(pd.read_excel(u'excel/袁隆平院士報告處理后.xlsx'))dfts = DataFrameToJSONArray(df1, 'json/wyt_xyz.json') # 參數(shù)(df數(shù)據(jù),文件存儲路徑)dfts.funChangeDataFrameType() # 自動轉(zhuǎn)換DataFrame的列數(shù)據(jù)類型dfts.funSaveJSONArrayFile() # 存儲JSON格式文件# [["2016-08-08", "袁隆平院士觀摩指導"], ["2016-08-09","修改完善袁隆平院士項目合作協(xié)議"],["2016-08-10","完成袁隆平院士合作協(xié)議"],["2016-08-31","袁隆平院士項目入駐院士港協(xié)議審核完畢"],....]

DataFrameToJSONArray()源碼

# - * - coding: utf - 8 -*-## 作者:田豐(FontTian)# 創(chuàng)建時間:'2017/7/16'# 郵箱:fonttian@Gmaill.com# CSDN:http://blog.csdn.net/fontthroneimport sysimport pandas as pdimport jsonimport rereload(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            
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 错那县| 北海市| 全南县| 枣庄市| 乐山市| 黑山县| 三原县| 镇雄县| 蕉岭县| 乌兰察布市| 阜南县| 德庆县| 青川县| 锦屏县| 屏山县| 镇坪县| 行唐县| 西吉县| 泸定县| 托克托县| 平泉县| 安远县| 锦屏县| 凤冈县| 濮阳市| 罗甸县| 苍溪县| 海丰县| 英山县| 拉萨市| 台州市| 涡阳县| 梅河口市| 藁城市| 页游| 雷波县| 巧家县| 贵南县| 宝清县| 河东区| 香港|