如何在不丢失值的情况下将 json 解析为 pandas 数据框? [复制]

Posted

技术标签:

【中文标题】如何在不丢失值的情况下将 json 解析为 pandas 数据框? [复制]【英文标题】:How can I parse a json to a pandas dataframe without losing values? [duplicate] 【发布时间】: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"]) 您的数据框已准备就绪! 【参考方案1】:

您需要扁平化您的 JSON。

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

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

【讨论】:

以上是关于如何在不丢失值的情况下将 json 解析为 pandas 数据框? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何在不丢失信息的情况下将因子转换为整数\数字?

如何在不丢失 exif 数据的情况下将 UIImage 转换为 JPEG?

如何在不丢失小数的情况下将数据框中的字符转换为数字

如何在不丢失科学记数法的情况下将列转换为单个管道分隔的列?

如何在不丢失阴影饱和度的情况下将带有阴影的 UIBezierpath 转换为 UIImage

如何在不丢失 Xampp 中的数据的情况下将类型从 varchar 更改为 Date