Construire un DataFrame Pandas à partir de dictionnaires imbriqués
Lorsque vous travaillez avec des dictionnaires imbriqués, il peut être difficile de convertir les données en un DataFrame Pandas dans d'une manière qui s'aligne sur la structure souhaitée. En particulier, extraire des données du niveau le plus profond du dictionnaire sous forme de séries peut s'avérer fastidieux.
Supposons que vous disposiez d'un dictionnaire structuré comme suit :
Le but est de construire un DataFrame avec un index hiérarchique en utilisant les données du troisième niveau du dictionnaire.
Utilisation un MultiIndex
Un Pandas MultiIndex est un moyen pratique de représenter des données hiérarchiques dans un DataFrame. Pour créer un MultiIndex à partir du dictionnaire imbriqué, remodelez les clés en tuples correspondant aux valeurs multi-index.
user_dict = {12: {'Category 1': {'att_1': 1, 'att_2': 'whatever'}, 'Category 2': {'att_1': 23, 'att_2': 'another'}}, 15: {'Category 1': {'att_1': 10, 'att_2': 'foo'}, 'Category 2': {'att_1': 30, 'att_2': 'bar'}}} df = pd.DataFrame.from_dict({(i,j): user_dict[i][j] for i in user_dict.keys() for j in user_dict[i].keys()}, orient='index')
Cette approche créera un DataFrame avec un index hiérarchique, où le premier niveau contient les UserIds et le deuxième niveau contient les catégories. Les données du troisième niveau sont désormais organisées en séries accessibles en utilisant à la fois le UserId et la Category comme index.
Approche alternative utilisant la concaténation
Une autre façon de construire le DataFrame est en concaténant les dataframes des composants.
user_ids = [] frames = [] for user_id, d in user_dict.iteritems(): user_ids.append(user_id) frames.append(pd.DataFrame.from_dict(d, orient='index')) df = pd.concat(frames, keys=user_ids)
Cette méthode parcourt le dictionnaire, créant un DataFrame pour chaque combinaison user_id et catégorie. Les trames de données résultantes sont ensuite concaténées verticalement et jointes à l'aide de clés comme index hiérarchique.
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!