Création de nouvelles lignes Pandas DataFrame à partir de plusieurs colonnes ID


Nostradukemas

J'ai un dataframe Pandas où les lignes ont des attributs et le potentiel pour plusieurs ID. Par exemple:

Name    Weapon    Color   ID1    ID2    ID3
Leo     Sword     Blue    11     12
Raph    Sai       Red     13
Don     Bo        Purple  14     15     16
Mike    Nunchuck  Orange  17

Je voudrais faire de chacun de ces ID sa propre ligne tout en conservant les attributs de la ligne. Par exemple:

Name    Weapon    Color   ID
Leo     Sword     Blue    11
Leo     Sword     Blue    12
Raph    Sai       Red     13
Don     Bo        Purple  14
Don     Bo        Purple  15
Don     Bo        Purple  16
Mike    Nunchuck  Orange  17

Comment utiliser des colonnes spécifiques pour créer des lignes et de quelles colonnes conserver les données?

Quang Hoang

Vous pouvez également utiliser stack(), qui conserve l'ordre d'origine de vos données:

(df.set_index(['Name', 'Weapon', 'Color'])
   .stack().reset_index(level=-1, drop=True)
   .reset_index(name='ID'))

Production:

    Name    Weapon      Color   ID
0   Leo     Sword       Blue    11.0
1   Leo     Sword       Blue    12.0
2   Raph    Sai         Red     13.0
3   Don     Bo          Purple  14.0
4   Don     Bo          Purple  15.0
5   Don     Bo          Purple  16.0
6   Mike    Nunchuck    Orange  17.0

Notez que cela ignorera l'index de la trame de données d'origine.

Articles connexes