Maison > développement back-end > Tutoriel Python > Comment remodeler les données Pandas du format long au format large avec plusieurs variables à l'aide de la fonction Pivot ?

Comment remodeler les données Pandas du format long au format large avec plusieurs variables à l'aide de la fonction Pivot ?

DDD
Libérer: 2024-11-02 17:14:02
original
398 Les gens l'ont consulté

How to Reshape Pandas Data from Long to Wide Format with Multiple Variables Using the Pivot Function?

Remodelage long à large de Pandas avec plusieurs variables

La conversion de données du format long au format large dans Pandas peut être difficile, en particulier lorsque plusieurs variables sont impliqué. Cette question explore une méthode de remodelage des données à l'aide de la fonction pivot.

Les données d'origine fournies sont :

  Salesman  Height   product      price
  Knut      6        bat          5
  Knut      6        ball         1
  Knut      6        wand         3
  Steve     5        pen          2
Copier après la connexion

Le format large souhaité est :

Salesman  Height    product_1  price_1  product_2 price_2 product_3 price_3  
  Knut      6        bat          5       ball      1        wand      3
  Steve     5        pen          2        NA       NA        NA       NA
Copier après la connexion

Un L'approche, suggérée par Chris Albon, consiste à utiliser la fonction pivot comme suit :

df.pivot(index='Salesman', columns='product', values='price')
Copier après la connexion

Cette approche crée un index à plusieurs niveaux, avec les colonnes Salesman et product comme indices de ligne et de colonne, respectivement. La colonne de prix devient les valeurs.

La trame de données résultante sera :

product      bat  ball  wand
Salesman                 
Knut          5    1     3
Steve         2   NaN   NaN
Copier après la connexion

Pour obtenir le format souhaité, des étapes supplémentaires sont nécessaires pour empiler les colonnes et extraire les valeurs du produit et du prix dans colonnes séparées. Ceci peut être réalisé en utilisant les fonctions stack et reset_index comme suit :

df.pivot(index='Salesman', columns='product', values='price') \
   .stack().reset_index() \
   .rename(columns={'level_1':'product', 0:'price'})
Copier après la connexion

Le résultat final sera le format large souhaité.

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal