Maison >développement back-end >Tutoriel Python >Comment puis-je diviser efficacement une colonne de dictionnaires Pandas en colonnes distinctes ?

Comment puis-je diviser efficacement une colonne de dictionnaires Pandas en colonnes distinctes ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-17 22:35:11545parcourir

How Can I Efficiently Split a Pandas Column of Dictionaries into Separate Columns?

Diviser une colonne de dictionnaires en colonnes séparées avec des pandas

Description du problème

Un DataFrame contient une colonne de dictionnaires qui doit être décomposée en colonnes séparées. Bien que les dictionnaires soient constitués des trois mêmes clés (« a », « b » et « c ») apparaissant dans le même ordre, leur longueur peut varier. Une solution de travail précédente utilisant pandas.concat() échoue désormais avec une IndexError.

Solution

Le problème vient du fait que les données sont codées sous forme de chaînes Unicode au lieu d'objets de dictionnaire. Pour résoudre ce problème :

  1. Utilisez ast.literal_eval() pour convertir les chaînes Unicode :
    Avant d'appliquer json_normalize, convertissez les chaînes Unicode en dictionnaires à l'aide de ast.literal_eval() :

    import ast
    df['Pollutant Levels'] = df['Pollutant Levels'].apply(ast.literal_eval)
  2. Normaliser JSON à l'aide de json_normalize :
    Utilisez pandas.json_normalize() pour diviser la colonne des dictionnaires en colonnes distinctes :

    df2 = pd.json_normalize(df['Pollutant Levels'])

Cette solution évite l'utilisation de fonctions d'application coûteuses et offre une approche plus efficace et plus robuste.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn