"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como gerenciar objetos JSON aninhados como um DataFrame no Pandas?

Como gerenciar objetos JSON aninhados como um DataFrame no Pandas?

Publicado em 2024-11-08
Navegar:333

How to Manage Nested JSON Objects as a DataFrame in Pandas?

Lendo JSON aninhado com objetos aninhados como um DataFrame do Pandas

Ao lidar com dados JSON contendo objetos aninhados, manipulá-los de forma eficiente em Python é crucial . Pandas fornece uma ferramenta poderosa para conseguir isso - json_normalize.

Expandindo a matriz em colunas

Para expandir a matriz de locais em colunas separadas, use json_normalize da seguinte maneira:

import json
import pandas as pd

with open('myJson.json') as data_file:
    data = json.load(data_file)

df = pd.json_normalize(data, 'locations', ['date', 'number', 'name'], record_prefix='locations_')

print(df)

Isso criará um dataframe com colunas expandidas:

  locations_arrTime locations_arrTimeDiffMin locations_depTime  \
0                                                        06:32   
1             06:37                        1             06:40   
2             08:24                        1                     

  locations_depTimeDiffMin           locations_name locations_platform  \
0                        0  Spital am Pyhrn Bahnhof                  2   
1                        0  Windischgarsten Bahnhof                  2   
2                                    Linz/Donau Hbf               1A-B   

  locations_stationIdx locations_track number    name        date  
0                    0          R 3932         R 3932  01.10.2016  
1                    1                         R 3932  01.10.2016  
2                   22                         R 3932  01.10.2016 

Tratamento de vários objetos JSON

Para arquivos JSON contendo vários objetos, a abordagem depende da estrutura de dados desejada.

Manter colunas individuais

Para manter colunas individuais (data, número, nome, locais), use o seguinte:

df = pd.read_json('myJson.json')
df.locations = pd.DataFrame(df.locations.values.tolist())['name']
df = df.groupby(['date', 'name', 'number'])['locations'].apply(','.join).reset_index()

print(df)

Isso agrupará os dados e concatenará os locais:

        date    name number                                          locations
0  2016-01-10  R 3932         Spital am Pyhrn Bahnhof,Windischgarsten Bahnho...

Achatar a estrutura de dados

Se preferir uma estrutura de dados nivelada, você pode use json_normalize com as seguintes configurações:

df = pd.read_json('myJson.json', orient='records', convert_dates=['date'])

print(df)

Isso gerará os dados em uma única tabela:

  number    date                   name  ... locations.arrTimeDiffMin locations.depTimeDiffMin locations.platform
0             R 3932  2016-01-10  R 3932  ...                       0                         0                  2
1             R 3932  2016-01-10  R 3932  ...                       1                         0                  2
2             R 3932  2016-01-10  R 3932  ...                       1                         -                  1A-B
Declaração de lançamento Este artigo foi reimpresso em: 1729739643 Se houver alguma violação, entre em contato com [email protected] para excluí-lo
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3