Comment créer une trame de données pandas à partir de json imbriqué avec un dictionnaire

Serviette

J'essaie de créer un fichier json de cadre de données pandas. J'ai vu plusieurs solutions à ce problème qui utilisent des fonctions intégrées from_dict/json_normalize mais je ne peux pas l'appliquer à mon code. Voici comment mes données sont structurées dans un fichier json :

     "data": [
   {
      "groups": {
         "data": [
               {
               "group": "Math",
               "year_joined": "2009"
               },
               {
               "group_name": "History",
               "year_joined": "2011"
               },
               {
               "group_name": "Biology",
               "year_joined": "2010"
               }
         ]
      },
      "id": "12512"
   },

Lorsque j'essaie de normaliser ces données avec les pandas, procédez comme suit :

path = 'mypath'
f = open(path)
data = json.load(f)

test = pd.json_normalize(
            data['data'], 
            errors='ignore') 

Je viens de recevoir quelque chose comme ça :

    id      groups.data
0   12512   [{'group_name': 'Math', 'year_joined': '2009', 'gr...
1   23172   [{'group_name': 'Chemistry', 'year_joined': '2005'...

Je veux que ces données ressemblent à ceci (solution 1) :

    id      group     year_joined
0   12512   group1    year1
1   12512   group2    year2
2   12512   group3    year3

Ou comme ceci (solution 2) :

    id      group                   year_joined
0   12512   group1,group2,group3    year1,year2,year3
1   23172   group4,group5           year4,year5

Comment puis-je y parvenir? J'ai essayé de passer le paramètre 'record_path' à la fonction 'json_normalize' mais cela ne change rien. J'ai essayé d'utiliser la fonction 'DataFrame.from_dict' pour contourner ce problème, mais j'ai échoué. La seule façon dont j'ai pu accéder à la solution 1 était de créer simplement plusieurs boucles qui parcouraient tout dans le fichier json et de l'ajouter à une liste séparée. Cela fonctionne un peu mais prend beaucoup de temps sur des ensembles de données plus volumineux.

Comment puis-je utiliser les outils pandas intégrés pour traiter les fichiers qui sont imbriqués en tant que dictionnaires dans la 3ème couche du fichier, comme présenté ci-dessus ?

Merci d'avance pour toutes réponses

Mec

Vous devez collecter les informations du datadictionnaire

solution 1

d = {}
for group in data["data"]:
    groups = [x["group_name"] for x in group['groups']["data"]]
    d['id'] = d.get('id', []) + [group['id']] * len(groups)
    d['group'] = d.get('group', []) + groups
    d['year_joined'] = d.get('year_joined', []) + [x["year_joined"] for x in group['groups']["data"]]

df = pd.DataFrame(d)

Sortir

      id      group year_joined
0  12512       Math        2009
1  12512    History        2011
2  12512    Biology        2010
3  23172  Chemistry        2007
4  23172  Economics        2008

solution 2

d = {}
for group in data["data"]:
    d['id'] = d.get('id', []) + [group['id']]
    d['group'] = d.get('group', []) + [','.join(x["group_name"] for x in group['groups']["data"])]
    d['year_joined'] = d.get('year_joined', []) + [','.join(x["year_joined"] for x in group['groups']["data"])]

df = pd.DataFrame(d)

Sortir

      id                 group     year_joined
0  12512  Math,History,Biology  2009,2011,2010
1  23172   Chemistry,Economics       2007,2008

Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.

En cas d'infraction, veuillez [email protected] Supprimer.

modifier le
0

laisse moi dire quelques mots

0commentaires
connexionAprès avoir participé à la revue

Articles connexes

Comment créer un dictionnaire d'un dictionnaire d'un dictionnaire à partir d'une trame de données pandas

Comment créer une trame de données à partir d'un dictionnaire avec un index auto-incrémenté

Comment créer un dictionnaire à partir de la trame de données pandas?

Comment créer une trame de données à plusieurs niveaux à partir d'un dictionnaire à couches inégales ?

Comment créer une boucle imbriquée efficace avec une trame de données Pandas

Comment puis-je créer un fichier JSON imbriqué d'une trame de données Pandas en Python?

création d'une trame de données à partir d'un dictionnaire imbriqué de liste

construire une trame de données multi-index pandas à partir d'un dictionnaire imbriqué

Pandas - Créez une trame de données avec une seule ligne à partir du dictionnaire avec un tableau d'entiers

Comment créer un dictionnaire imbriqué à partir de pandas DataFrame

Pandas - créer une trame de données à partir de valeurs de clé imbriquées et de liste imbriquée dans le dictionnaire

Créer une trame de données à partir d'un dictionnaire avec deux paires de clés et de valeurs

Comment ajouter mes données à une trame de données python pandas à partir d'un dictionnaire ?

Comment créer un dataframe pandas à partir d'un dictionnaire imbriqué avec des listes de dictionnaires ?

Comment créer une trame de données des 5 principaux mots proches d'une liste de mots particulière à partir d'un dictionnaire dans Pandas

Créer une trame de données Pandas à partir d'une version JSON basée sur des listes imbriquées

Comment créer une trame de données Pandas à partir d'un tuple

Comment créer un histogramme à partir d'une trame de données pandas ?

Comment créer un fichier JSON avec des enregistrements imbriqués à partir d'une table de données plate?

Créer une trame de données à partir d'un dictionnaire avec plusieurs clés et valeurs

Créer une trame de données à partir d'un dictionnaire de liste de longueur variable

J'ai besoin de créer une trame de données spark à partir d'un fichier json imbriqué dans scala

créer une trame de données pandas à partir du dictionnaire

comment créer une trame de données à partir d'une liste imbriquée dans R?

Création d'une trame de données Pandas à partir d'éléments d'un dictionnaire

Créer une trame de données pandas à partir d'un fichier .txt avec des données par ligne

Comment créer un dataframe pandas avec des colonnes imbriquées à partir d'une liste de dictionnaires imbriqués

Comment charger une trame de données imbriquée avec pandas.io.json.read_json ?

Comment créer par programme une trame de données à partir de vecteurs avec un modèle de nom

TOP liste

  1. 1

    Comment utiliser HttpClient avec TOUT cert ssl, quelle que soit la « mauvaise » est

  2. 2

    Comment afficher du texte au milieu de div avec une couleur d'arrière-plan différente?

  3. 3

    Résultat de l'échantillonneur JMeter : comprendre le temps de chargement, le temps de connexion et la latence

  4. 4

    Modbus Python Schneider PM5300

  5. 5

    Pourquoi Object.hashCode () ne suit pas la convention du code Java

  6. 6

    Comment faire une recherche partielle et obtenir un score pertinent dans Elasticsearch

  7. 7

    Existe-t-il un moyen de voir si mon bot est hors ligne ?

  8. 8

    Comment choisir le nombre de fragments et de répliques Elasticsearch

  9. 9

    optimiser les opérations du serveur avec elasticsearch: traitement des filigranes de disque bas

  10. 10

    Comment changer la couleur de la police dans R?

  11. 11

    Autocomplete avec java, Redis, Recherche élastique, Mongo

  12. 12

    MasterService d'ElasticSearch prend trop de temps pour calculer l'état du cluster et lancer ProcessClusterEventTimeoutException

  13. 13

    Comment vérifier si un utilisateur spécifique a un rôle? Discord js

  14. 14

    Spring @RequestParam DateTime format comme ISO 8601 Date Heure facultative

  15. 15

    Comment analyser un hachage Ruby plat en un hachage imbriqué?

  16. 16

    Comment créer une nouvelle application dans Dropbox avec des autorisations complètes

  17. 17

    Quelque chose dans le cluster Elasticsearch 7.4 devient de plus en plus lent avec les délais de lecture de temps en temps

  18. 18

    Ajustement non linéaire avec R

  19. 19

    php ajouter et fusionner des données de deux tables

  20. 20

    Exporter la table de l'arborescence vers CSV avec mise en forme

  21. 21

    帶有 Spring Boot 和 Azure AD 的 KeyCloak

chaudétiquette

Archive