Maison >développement back-end >Tutoriel Python >Comment puis-je transformer des colonnes en lignes à l'aide de Pandas melt() ?

Comment puis-je transformer des colonnes en lignes à l'aide de Pandas melt() ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-21 13:35:09344parcourir

How Can I Transform Columns into Rows Using Pandas melt()?

Convertir les colonnes en lignes avec des pandas

Dans l'analyse des données, il peut être utile de restructurer les ensembles de données pour améliorer la lisibilité et l'analyse. Une transformation courante consiste à convertir des colonnes en lignes. Cet article explique comment effectuer cette opération à l'aide de la bibliothèque Pandas.

Considérons un ensemble de données avec des informations spécifiques à l'emplacement et à la date stockées dans les en-têtes de colonnes, comme indiqué ci-dessous :

| location | name | Jan-2010 | Feb-2010 | March-2010 |
|---|---|---|---|---|
| A        | "test" | 12 | 20 | 30 |
| B        | "foo"  | 18 | 20 | 25 |

L'objectif est pour remodeler les données dans un format où chaque date correspond à une ligne, comme suit :

| location | name | Date | Value |
|---|---|---|---|
| A        | "test" | Jan-2010 | 12 |
| A        | "test" | Feb-2010 | 20 |
| A        | "test" | March-2010 | 30 |
| B        | "foo"  | Jan-2010 | 18 |
| B        | "foo"  | Feb-2010 | 20 |
| B        | "foo"  | March-2010 | 25 |

Pour réaliser cette transformation, Pandas fournit la fonction melt. Appliquez simplement melt au DataFrame, en spécifiant les colonnes à conserver comme identifiants de ligne (id_vars) et les en-têtes de colonnes pour les nouvelles colonnes (var_name et value_name).

import pandas as pd

df.melt(id_vars=["location", "name"],
        var_name="Date",
        value_name="Value")

Pour les versions Pandas antérieures à 0.20, un léger une approche différente est nécessaire, impliquant une combinaison de fusion et de tri :

df2 = pd.melt(df,
                  id_vars=["location", "name"], 
                  var_name="Date",
                  value_name="Value")

df2 = df2.sort(["location", "name"])

N'oubliez pas de réinitialiser l'index pour garantir un nettoyage propre sortie :

df2.reset_index(drop=True)

Cette technique offre un moyen pratique de remodeler les cadres de données, facilitant l'analyse et la présentation des données tabulaires.

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