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
972 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!

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