Maison >développement back-end >Tutoriel Python >Comment la fonction « melt » de Pandas peut-elle remodeler un DataFrame avec des colonnes de groupe et de nom supplémentaires ?

Comment la fonction « melt » de Pandas peut-elle remodeler un DataFrame avec des colonnes de groupe et de nom supplémentaires ?

DDD
DDDoriginal
2024-11-28 00:04:111018parcourir

How Can Pandas' `melt` Function Reshape a DataFrame with Additional Group and Name Columns?

Fonction Pandas Melt : un outil de remodelage

Problème

Considérez un DataFrame df et un dictionnaire d. Vous souhaitez remodeler df en un tableau avec des colonnes supplémentaires, à savoir Group et Name. Le résultat souhaité doit ressembler à :

    Group   Name  Year  Value
 0      A    Amy  2013      2
 1      A    Amy  2014      9
 2      B    Bob  2013      4
 3      B    Bob  2014      2
 4      B    Ben  2013      1
 5      B    Ben  2014      5
 6      C   Carl  2013      7
 7      C   Carl  2014      4
 8      C  Chris  2013      8
 9      C  Chris  2014      5
10  Other         2013      3
11  Other         2014      6

Solution

Pour réaliser ce remodelage, nous utiliserons la fonction de fusion Pandas.

m = pd.melt(df, id_vars=['Year'], var_name='Name')

Cela créera un DataFrame fondu m avec les colonnes Année, Nom et valeur. Pour ajouter la colonne Groupe, nous remodelons d comme suit :

d2 = {}
for k, v in d.items():
  for item in v:
    d2[item] = k

Nous mappons ensuite d2 à m['Name'] pour remplir la colonne Groupe.

m['Group'] = m['Name'].map(d2)

Enfin, nous déplacez les valeurs « Autres » du nom vers le groupe :

mask = m['Name'] == 'Other'
m.loc[mask, 'Name'] = ''
m.loc[mask, 'Group'] = 'Other'

Le DataFrame m résultant correspondra à la sortie souhaitée.

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