2 votes

Ajouter des colonnes à un cadre de données en fonction des valeurs catégoriques d'une colonne existante.

J'ai un cadre de données qui comporte une colonne contenant le nom d'une variable et une colonne contenant la valeur de cette variable. Quelques lignes d'exemple dans ce tableau pourraient être :

    id      variable    value   date
0   AS14.01 mood        6.000   2014-02-26
1   AS14.01 acti        0.091   2014-03-20
2   AS14.01 pers        0.101   2014-04-21

Je veux transformer cela en un cadre de données où chaque valeur unique dans la colonne variable forme une nouvelle colonne contenant la valeur de la ligne respective. Il ne doit y avoir qu'une seule ligne par date pour un identifiant spécifique. Voici des exemples de lignes pour le cadre de données ci-dessus :

    id      date        mood   acti   pers
0   AS14.01 2014-02-26  6.000  NaN    NaN
1   AS14.01 2014-03-20  NaN    0.091  NaN
2   AS14.01 2014-04-21  NaN    NaN    0.101

Une question similaire a peut-être déjà été postée sur stackoverflow, mais je ne trouve pas la formulation correcte de ce problème. J'espère que quelqu'un pourra m'aider.

1voto

Yakym Pirozhenko Points 5759

Voici une façon de procéder avec get_dummies . Vous pouvez également essayer d'utiliser le pivotement. Cela ne supprime pas l'original variable automatiquement.

df = df.join(pd.get_dummies(df.variable).replace(0, np.nan).mul(df.value, axis=0))

        # id variable  value        date   acti  mood   pers
# 0  AS14.01     mood  6.000  2014-02-26    NaN   6.0    NaN
# 1  AS14.01     acti  0.091  2014-03-20  0.091   NaN    NaN
# 2  AS14.01     pers  0.101  2014-04-21    NaN   NaN  0.101

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X