Dans MATLAB, pour échanger les première et deuxième colonnes d'une table A
, on pourrait faire ceci1
A = A(:, [2 1 3:end]);
Est-il de la même façon pratique de faire cela si A
ont une pandas DataFrame
à la place?
1 MATLAB utilise 1 à base d'indexation.
OriginalL'auteur kjo | 2014-09-03
pandas a réindexer méthode qui ne. Vous avez juste besoin de donner une liste avec les noms de colonne dans l'ordre que vous souhaitez:
Acclamations
Quand vous avez un petit nombre de colonnes. J'ai actuellement une énorme liste de plus de 100 colonnes, et les étiquettes de colonne, celle dont j'ai besoin pour la formation dans le milieu.
OriginalL'auteur aspire57
Une légère variante sur acushner réponse:
exemple:
Mise à JOUR
Si vous voulez juste changer l'ordre des colonnes sans en changer le contenu d'une colonne, alors vous pouvez indexer à l'aide de fantaisie indexation:
l'OP n'a pas précisé s'ils veulent échanger l'ordre ou le contenu d'une colonne
En fait êtes-vous en lisant le contenu de ma réponse correctement? Vous pouvez clairement voir que la colonne a et b les positions et les valeurs ont été inversées
L'OP dit qu'il veut l'équivalent de Matlab qui échange l'ensemble de la colonne, pas juste l'étiquette. Dans votre réponse, vous pouvez voir que a[0] est -0.682446 dans[39] et -0.200654 dans[40].
la permutation de l'ordre des colonnes est vraiment banale, sans avoir à changer le contenu d'une colonne, il suffit de faire
df.ix[:,['b','a','c']]
va changer l'ordre mais ne sont pas associés à des valeurs de colonneOriginalL'auteur EdChum
J'ai finalement réglé pour cette:
C'est beaucoup moins pratique que le MATLAB version, mais j'aime le fait qu'il ne nécessite pas la création de variables temporaires.
df.ix[:,['b','a','c']]
est que ce que vous voulez?OriginalL'auteur kjo
ou, encore plus simple:
*edit: fixe par Ivan suggestions.
deuxième ne fonctionne toujours pas
Sa permutation des valeurs de la Colonne, mais pas l'en-tête de toute façon de swap en-tête aussi
OriginalL'auteur acushner
Si vous avez plusieurs colonnes et de la performance et de la mémoire ne sont pas un problème, vous pouvez simplement utiliser cette fonction:
OriginalL'auteur Luca Mastrostefano