Exemples de comment échanger les lignes et les colonnes (i.e. transposer) une dataframe avec pandas en python:
Créer un dataframe avec pandas
Créons d'abord une dataframe avec pandas
import pandas as pd
data = {'Age':[21,26,82,15,28],
'Id':['jch2c1','63jc2h','hg217d','hj127b','edew32'],
'weight':[120,148,139,156,129],
'Gender':['male','male','female','male','female'],
'Country':['France','USA','USA','Germany','USA']}
df = pd.DataFrame(data=data,index=['A','B','C','D','E'])
donne
Age Id weight Gender Country
A 21 jch2c1 120 male France
B 26 63jc2h 148 male USA
C 82 hg217d 139 female USA
D 15 hj127b 156 male Germany
E 28 edew32 129 female USA
Transposer une dataframe
Pour transposer rapidement une dataframe, une solution simple consiste à faire :
df.T
donne ici
A B C D E
Age 21 26 82 15 28
Id jch2c1 63jc2h hg217d hj127b edew32
weight 120 148 139 156 129
Gender male male female male female
Country France USA USA Germany USA
Pour le rendre plus permanent:
df = df.T
Transposer une dataframe avec transpose()
Avec l'option copy = False
Une autre solution consiste à utiliser
new_df = df.transpose()
Notez que par défaut transpose() a l'option copy = False.
donne
A B C D E
Age 21 26 82 15 28
Id jch2c1 63jc2h hg217d hj127b edew32
weight 120 148 139 156 129
Gender male male female male female
Country France USA USA Germany USA
Ensuite, si la dataframe d'origine est modifiée :
df.loc['A','weight'] = -9999
donne
Age Id weight Gender Country
A 21 jch2c1 -9999 male France
B 26 63jc2h 148 male USA
C 82 hg217d 139 female USA
D 15 hj127b 156 male Germany
E 28 edew32 129 female USA
la dataframe transposée n'est pas affectée puisque copy = False
A B C D E
Age 21 26 82 15 28
Id jch2c1 63jc2h hg217d hj127b edew32
weight 120 148 139 156 129
Gender male male female male female
Country France USA USA Germany USA
Avec l'option copy = True
Maintenant avec l'option copy = True:
new_df = df.transpose(copy=True)
si la dataframe d'origine est modifiée :
df.loc['A','weight'] = -9999
donne
Age Id weight Gender Country
A 21 jch2c1 -9999 male France
B 26 63jc2h 148 male USA
C 82 hg217d 139 female USA
D 15 hj127b 156 male Germany
E 28 edew32 129 female USA
alors la dataframe transposée est AUSSI affectée :
A B C D E
Age 21 26 82 15 28
Id jch2c1 63jc2h hg217d hj127b edew32
weight -9999 148 139 156 129
Gender male male female male female
Country France USA USA Germany USA