Maison >développement back-end >Tutoriel Python >Comment la fonction « melt » de Pandas peut-elle remodeler les données avec des colonnes de date en lignes ?

Comment la fonction « melt » de Pandas peut-elle remodeler les données avec des colonnes de date en lignes ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-30 11:02:14470parcourir

How Can Pandas' `melt` Function Reshape Data with Date Columns into Rows?

Convertir les colonnes en lignes avec des pandas

Lorsque les données tabulaires contiennent des dates comme en-têtes de colonne, la conversion de ces colonnes en lignes avec les valeurs correspondantes peut être une tâche précieuse. Pour réaliser cette transformation, la bibliothèque Pandas de Python offre une solution pratique.

Problème

L'ensemble de données fourni présente une structure dans laquelle les informations sont regroupées par emplacement pour différentes dates, chacune représentée par un en-tête de colonne distinct. L'objectif est de remodeler ces données dans un format où chaque ligne représente un lieu, une date et une valeur associée.

Solution

Pour convertir les colonnes en lignes, Pandas fournit la fonction de fusion. Cette fonction nous permet de spécifier quelles colonnes doivent servir d'en-têtes de colonnes et lesquelles doivent servir d'en-têtes de lignes. Dans ce contexte, le nom et l'emplacement sont définis comme en-têtes de ligne, et les en-têtes de date sont fusionnés dans une seule colonne Date, tandis que leurs valeurs deviennent la colonne Valeur.

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

Le DataFrame résultant sera similaire au résultat attendu :

  location  name        Date  Value
0        A  "test"    Jan-2010     12
1        B   "foo"    Jan-2010     18
2        A  "test"    Feb-2010     20
3        B   "foo"    Feb-2010     20
4        A  "test"  March-2010     30
5        B   "foo"  March-2010     25

Pour les anciennes versions de Pandas (<0,20), une combinaison de pd.melt et de tri peut obtenir le résultat souhaité résultat :

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

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