3 votes

Renommer et sélectionner des colonnes simultanément dans pandas

J'ai essayé de sélectionner des colonnes et de les renommer avec pandas . En R's dplyr c'est assez simple, mais quand il s'agit de pandas, je n'ai pas trouvé le moyen de le faire.

Par exemple

import numpy as np
import pandas as pd
np.random.seed(128)

df = pd.DataFrame(np.random.random((5,7)), index=pd.Series(range(1,6), name="week"))
df

             0         1         2    ...            4         5         6
week                                  ...                                 
1     0.866637  0.263145  0.131408    ...     0.238924  0.645475  0.790599
2     0.601442  0.334299  0.119428    ...     0.109724  0.602113  0.251285
3     0.299681  0.517116  0.715203    ...     0.102088  0.706524  0.985842
4     0.559079  0.592019  0.741931    ...     0.125672  0.907613  0.573170
5     0.731224  0.301214  0.066628    ...     0.133776  0.655933  0.423496

puis j'essaie de changer le nom de certaines colonnes

df.rename(columns={0 : "L",1 : "W",2 : "C1",3 : "C2"},inplace=True)

et j'ai dû sélectionner les colonnes qui m'intéressent

df.loc[:,'L','C2',4:6] 

mais en obtenant

df.loc[:,['L','C2',4:6]]

SyntaxError : syntaxe invalide

avec R's dplyr

une seule ligne de code suffit

select(L=0,W=1,C1=2,4:max(ncol(.))

pourquoi pandas n'est pas simple et comment puis-je faire la même chose avec pandas ?

le résultat attendu devrait ressembler à

week                 L                        C2                      4                  5                   6
1   0.8666370428503979      0.041593443747687364    0.23892433469051455 0.6454746004955415  0.7905993520222332
2   0.6014424381923764      0.30913305250605294     0.10972378522258008 0.6021133114626169  0.25128495916256977
3   0.2996812876134075      0.9314494030471506      0.1020881539666203  0.7065238642131539  0.9858423635165023
4   0.5590790688036144      0.8212812049578435      0.12567153920750518 0.9076131583950552  0.5731702972368342
5   0.7312243453837555      0.16307047811396225     0.13377623506787528 0.6559325420882364  0.4234963284022535

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