如何将带有JSON字符串的Pandas DataFrame转换为有效JSON?

罗特赫尔特

我正在尝试将具有多个扩展名的lage excel文件保存到带有熊猫的JSON文件中。我需要结果得到这样的结构:

{ 'Sheet1':
   [ 'column1': value,
     'column2': value,
     'column3': value,
     'column4': value ]
'Sheet2':
   [ 'column1': value,
     'column2': value,
     'column3': value,
     'column4': {'json_key1': value,
                 'json_key2': value,}
   ]
 }

我尝试了以下代码以获取此信息:

import pandas as pd
import json

EXCEL_FILE = 'example_data.xlsm'
JSON_FILE = 'json_data.json'

sheets = pd.ExcelFile(EXCEL_FILE).sheet_names
json_data = {}
for sheet in sheets:
    df = pd.read_excel(EXCEL_FILE, index_col=None, header=0, sheet_name=sheet, na_values='null')
    json_data[sheet] = json.loads(df.to_json(orient='records', force_ascii=False, date_format='iso'))
with open(JSON_FILE, 'w',  encoding='utf-8') as json_file:
    json.dump(json_data, json_file, indent=2, ensure_ascii=False)

excel中有几列带有类似json的字符串。[1]:https//i.stack.imgur.com/gvc0K.png

当我使用df.to_json()导出到JSON时,它会像这样保存此列:

{
  "acts_31L": [
    {
      "ID": 219100060,
      "ID_ETD": null,
      "INDEX_NUM": "31-7635-191022195410",
      "IT_SECTIONS": "{\"CTIME\":\"2019-10-22 21:26:41.680\",\"section\":{\"CTIME\":\"2019-10-22 21:26:41.680\",\"SERIE\":\"506\",\"SERIE_NAME\":\"ТЭП70\",\"SER_NUM\":\"00000542\",\"SEC_CODE\":\"0\",\"EL_COUNT\":0,\"FUEL_LIT\":0.0,\"FUEL_DENS\":0.8,\"FUEL_KG\":0.0,\"IS_NEED\":\"1\"}}",
      "IT_INVENT": "{\"CTIME\":\"2019-10-22 21:26:41.680\",\"inv\":{\"CTIME\":\"2019-10-22 21:26:41.680\",\"INVENT_NAME\":\"Пенька\",\"UNIT\":\"шт.\",\"NORMA\":0,\"FACT\":0,\"INFO_TYPE\":\"0\"}}"
    },

那么如何将此字符串另存为json-object?

绝杀

在将dataframe转换为json之前IT_SECTIONSIT_INVENT请使用ast.literal_eval转换列dict 然后,您可以将其转换为json。

from ast import literal_eval

for sheet in sheets:
    df = pd.read_excel(EXCEL_FILE, index_col=None, header=0, sheet_name=sheet, na_values='null')
    df['IT_SECTIONS'] = df['IT_SECTIONS'].apply(lambda x: literal_eval(str(x)))
    df['IT_INVENT'] = df['IT_INVENT'].apply(lambda x: literal_eval(str(x)))
    json_data[sheet] = json.loads(df.to_json(orient='records', force_ascii=False, date_format='iso'))

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何将带有对象和数组索引的字符串转换为json

如何将带有括号命名的属性的JSON字符串转换为Typescript

如何将带有字符代码的字符串转换为带引号的形式

如何将带有转义字符的 ascii 字符串转换为其等效的 unicode

如何将带有多余字符('[','“')的字符串转换为列表?

如何将数组转换为有效的json

如何将带有字符串的嵌套数组转换为 JavaScript 中的数字?

如何将带有字典的字符串转换为实际的字典对象?

如何将带有时区的字符串转换为Unix时间戳Python?

如何将带有 T 的字符串转换为特定的时区?

C#如何将带有回车符的字符串转换为数组

如何将带有“ \ r \ n”的字符串转换为列表?

如何将带有“ []”的字符串转换为整数数组

如何将带有 $ sing 的字符串转换为 int

如何将带有数组的字符串转换为数组

如何将带有数学符号的字符串转换为数字?

如何将带有函数的字符串转换为Python中的可执行代码?

如何将带有数字的字符串转换为数组?

如何将带有字母的字符串转换为int c#

如何将带有in子句的sql查询转换为字符串

如何将带有字符串的列替换为带有整数的列?

如何将带逗号的字符串转换为带有标签的字符串-ES6

将PHP JSON字符串转换为有效json

如何多次将字符串分解后将字符串转换为有效的json

如何将带有数据对象的数组转换为带有 javascripts 的字符串数组?

将json文件转换为dataframe的有效方法是什么?

如何将字符串(带有scape字符的json)转换为动态对象?

将 Pandas DataFrame 转换为矩阵的有效方法

将无效的 Json 转换为有效的 Json