【问题标题】:How can I parse a json to a pandas dataframe without losing values? [duplicate]如何在不丢失值的情况下将 json 解析为 pandas 数据框? [复制]
【发布时间】:2021-05-28 09:55:22
【问题描述】:

我正在尝试将 json 解析为数据框。我专注于 json 的第一个键(验证)。 json的结构非常标准,如下例:

{
"validations": [
    {
        "id": "1111111-2222-3333-4444-555555555555",
        "created_at": "2020-02-19T14:35:58-03:00",
        "finished_at": "2020-02-19T14:36:01-03:00",
        "processing_status": "concluded",
        "receivable_id": "VAL-AAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE",
        "external_reference": "FFFFFFFF-GGGG-HHHH-IIII-JJJJJJJJJJJJ",
        "batch_id": "e2fb8d34-8c53-4910-b7a4-602ab6845855",
        "portfolio": {
            "id": "57a3e56a-347b-449c-8f1a-253baba90e7a",
            "nome": "COMPANY_NAME"
      }
    }],

"pages": {
    "per_page": 10,
    "page": 1
  }
}

我正在使用以下代码:

import json   as json
import pandas as pd
import os



print(os.getcwd()) ## point out the directory you're working on this cell


filename = r"file_path\file_name.json"

f = open(filename)
data1 = json.loads(f.read())

df = pd.json_normalize(data1)

data1.keys() 

## => returns: dict_keys(['validacoes', 'paginacao'])


res = dict((k, data1[k]) for k in ['validacoes'] 
                                    if k in data1) 

res.keys() 
## => returns dict_keys(['validacoes'])


df = pd.DataFrame(res, columns=['id', 'data_criacao', 'data_finalizacao', 'status_do_processamento', 'recebivel_id','referencia_externa', 'lote_id', 'veiculo'])  


df.head() 

## returns=> a dataframe with no values on the columns, as if they were empty from the json
| id | created_at | finished_at | processing_status | receivable_id | external_reference | batch_id | external_reference | portfolio |

所以,我已经在文本编辑器上检查了原始文件,是的,json 已正确映射到值。

并且格式在整个文件中都是标准化的。

关于为什么 json 中的数据在进程中丢失的任何想法?

【问题讨论】:

  • 这能回答你的问题吗? JSON to pandas DataFrame
  • 读取 json 后执行此操作:df = pd.DataFrame(data1["validations"]) 您的数据框已准备就绪!

标签: python json pandas dataframe dictionary


【解决方案1】:

您需要扁平化您的 JSON。

这篇文章应该可以帮助您: Python flatten multilevel/nested JSON

另外,pandas 有一个简单的json_normalize 方法供您使用。

【讨论】:

    猜你喜欢
    • 2022-10-23
    • 1970-01-01
    • 2023-01-15
    • 1970-01-01
    • 2018-10-30
    • 1970-01-01
    • 2011-08-02
    • 2020-11-20
    • 2018-08-19
    相关资源
    最近更新 更多