读取JSON文件并使用python转换为CSV

2024-06-25 23:46:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这个json文件,我想用pandas把它转换成CSV

  {
        "partes": [
            {
                "processo": "1001824-89.2019.8.26.0493",
                "tipo": "Reqte: ",
                "nome": "Sérgio Izaias Massaranduba  Advogada: Mariana Pretel E Pretel      ",
                "cnpj_cpf": "Não encontrado",
                "oab": "Não encontrado"
            },
            {
                "processo": "1001824-89.2019.8.26.0493",
                "tipo": "Reqda: ",
                "nome": "CLARO S/A   ",
                "cnpj_cpf": "Não encontrado",
                "oab": "Não encontrado"
            }
        ],
        "movimentacoes": [
            {
                "processo": "1001824-89.2019.8.26.0493",
                "data": "28/10/2019",
                "tem_anexo": "",
                "movimentacao": " Distribuído Livremente (por Sorteio) (movimentação exclusiva do distribuidor)  "
            }
        ]
    }

当我使用以下函数read_json, 他给我返回一个错误ValueError: arrays must all be same length

阿奎埃斯塔梅乌科迪戈:

import pandas as pd
import json
import os

os.chdir('C:\\Users\\Suporte\\Desktop\\AUT\\autonomation')


df = pd.read_json('file.json')

df_ = df.to_csv('file.csv', sep=';',index=False)

我不知道他为什么看不懂文件


Tags: 文件importjsonpandasdfreaddonome
1条回答
网友
1楼 · 发布于 2024-06-25 23:46:15
  • 记住pandas是关于数据表的,带有重复的列标题。你知道吗
  • 这里呈现的JSON作为一个整体,并不对应于表格数据。你知道吗
  • 这个JSON需要通过单独的键读入
  • 或者,partesmovimentacoes的长度必须相同。
    • partesvalue的长度是2,而movimentacoes的长度是1。你知道吗
  • 给定以下数据,在名为test1.json的文件中

数据:

{
    "partes": [{
            "processo": "1001824-89.2019.8.26.0493",
            "tipo": "Reqte: ",
            "nome": "Sérgio Izaias Massaranduba  Advogada: Mariana Pretel E Pretel      ",
            "cnpj_cpf": "Não encontrado",
            "oab": "Não encontrado"
        }, {
            "processo": "1001824-89.2019.8.26.0493",
            "tipo": "Reqda: ",
            "nome": "CLARO S/A   ",
            "cnpj_cpf": "Não encontrado",
            "oab": "Não encontrado"
        }
    ],
    "movimentacoes": [{
            "processo": "1001824-89.2019.8.26.0493",
            "data": "28/10/2019",
            "tem_anexo": "",
            "movimentacao": " Distribuído Livremente (por Sorteio) (movimentação exclusiva do distribuidor)  "
        }
    ]
}

代码:

from pathlib import Path
import pandas as pd
import json

# path to file
p = Path(r'c:\some_path_to_data\test1.json')

# read the JSON file in
with p.open('r') as f:
    data = json.loads(f.read())

# create the dataframe
df_partes = pd.DataFrame.from_dict(data['partes'])
print(df_partes)

                  processo     tipo                                                                  nome         cnpj_cpf              oab
 1001824-89.2019.8.26.0493  Reqte:   Sérgio Izaias Massaranduba  Advogada: Mariana Pretel E Pretel        Não encontrado  Não encontrado
 1001824-89.2019.8.26.0493  Reqda:                                                           CLARO S/A     Não encontrado  Não encontrado

df_movimentacoes = pd.DataFrame.from_dict(data['movimentacoes'])
print(df_movimentacoes)

                  processo        data tem_anexo                                                                         movimentacao
 1001824-89.2019.8.26.0493  28/10/2019             Distribuído Livremente (por Sorteio) (movimentação exclusiva do distribuidor)

# save to csv
df_partes.to_csv('partes.csv', index=False)
df_movimentacoes('moviementacoes.csv', index=False)
  • 如果JSON有许多键,请考虑按如下方式制作数据帧字典:
df_dict = {key: pd.DataFrame.from_dict(data[key]) for key in data.keys()}

# Access a specific dataframe just like a regular dictionary
df_dict['partes']

# save to csv
for key in df_dict.keys():
    df_dict[key].to_csv(f'{key}.csv', index=False)

相关问题 更多 >