Maison > développement back-end > Tutoriel Python > Comment remodeler un DataFrame Pandas à l'aide de la fonction Melt et d'un dictionnaire ?

Comment remodeler un DataFrame Pandas à l'aide de la fonction Melt et d'un dictionnaire ?

Barbara Streisand
Libérer: 2024-11-22 07:08:10
original
909 Les gens l'ont consulté

How to Reshape a Pandas DataFrame Using the Melt Function and a Dictionary?

Fonction Pandas Melt : remodeler les trames de données pour l'analyse

Question :

Considérez une trame de données avec plusieurs colonnes et un dictionnaire :

df = pd.DataFrame([[2, 4, 7, 8, 1, 3, 2013], [9, 2, 4, 5, 5, 6, 2014]], colonnes=['Amy', 'Bob', "Carl", "Chris", "Ben", "Autre", 'Année'])<br>

d = {'A' : ['Amy'], 'B' : ['Bob', 'Ben'], 'C' : ['Carl', 'Chris']}<br>

Comment faire nous remodelons le dataframe pour qu'il ressemble à la structure suivante, où les colonnes sont fondues et regroupées ?

    Nom du groupe Année Valeur<br> 0 A Amy 2013 2<br> 1 A Amy 2014 9<br> 2 B Bob 2013 4<br> 3 B Bob 2014 2<br> 4 B Ben 2013 1<br> 5 B Ben 2014 5<br>6C Carl 2013 7<br>7 C Carl 2014 4<br>8 C Chris 2013 8<br>9 C Chris 2014 5<br>10 Autre 2013 3<br>11 Autre 2014 6<br>

Réponse :

Pour remodeler le dataframe à l'aide de la fonction de fusion, suivez ces étapes :

  1. Faire fondre le dataframe : Fondre le dataframe dans un format large à l'aide du fonction de fusion. Cela convertira les colonnes en lignes, avec le paramètre id_vars utilisé pour spécifier les colonnes qui doivent rester intactes.

    m = pd.melt(df, id_vars=['Year'], var_name='Name')
    Copier après la connexion
  2. Créez un dictionnaire de mappage : Remodelez le dictionnaire d pour créer un mappage entre les noms de colonnes et le groupe noms.

    d2 = {}
    for k, v in d.items():
        for item in v:
            d2[item] = k
    Copier après la connexion
  3. Ajouter un « Groupe » : Mappez le dictionnaire d2 nouvellement créé à la colonne « Nom » pour ajouter la colonne « Groupe ».

    m['Group'] = m['Name'].map(d2)
    Copier après la connexion
  4. Déplacer 'Autre' : Déplacer les valeurs 'Autre' de la colonne « Nom » à la colonne « Groupe ».

    mask = m['Name'] == 'Other'
    m.loc[mask, 'Name'] = ''
    m.loc[mask, 'Group'] = 'Other'
    Copier après la connexion

La trame de données résultante contiendra la structure aplatie souhaitée :

print(m)

    Year   Name  value Group
0   2013    Amy      2      A
1   2014    Amy      9      A
2   2013    Bob      4      B
3   2014    Bob      2      B
4   2013   Carl      7      C
...    ...    ...    ...    ...
7   2014  Chris      5      C
8   2013    Ben      1      B
9   2014    Ben      5      B
10  2013             3  Other
11  2014             6  Other
Copier après la connexion

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal