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
DDDoriginal
2024-11-02 17:14:02380parcourir

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

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

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

df.pivot(index='Salesman', columns='product', values='price')

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

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'})

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!

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