Existe-t-il un moyen de réorganiser les colonnes dans la trame de données pandas en fonction de mes préférences personnelles (c'est-à-dire pas triées par ordre alphabétique ou numérique, mais plutôt en suivant certaines conventions)?
Exemple simple:
frame = pd.DataFrame({
'one thing':[1,2,3,4],
'second thing':[0.1,0.2,1,2],
'other thing':['a','e','i','o']})
produit ceci:
one thing other thing second thing
0 1 a 0.1
1 2 e 0.2
2 3 i 1.0
3 4 o 2.0
Mais à la place, j'aimerais ceci:
one thing second thing other thing
0 1 0.1 a
1 2 0.2 e
2 3 1.0 i
3 4 2.0 o
(Veuillez fournir une solution générique plutôt que spécifique à ce cas. Merci beaucoup.)
Vous pouvez utiliser ceci:
la source
pandas
.pandas
v0.23`).Voici une solution que j'utilise très souvent. Lorsque vous avez un grand ensemble de données avec des tonnes de colonnes, vous ne voulez certainement pas réorganiser manuellement toutes les colonnes.
Ce que vous pouvez et, très probablement, voulez faire, c'est simplement classer les premières colonnes que vous utilisez fréquemment et laisser toutes les autres colonnes être elles-mêmes. Il s'agit d'une approche courante dans R.
df %>%select(one, two, three, everything())
Vous pouvez donc d'abord taper manuellement les colonnes que vous souhaitez ordonner et positionner avant toutes les autres colonnes d'une liste
cols_to_order
.Ensuite, vous construisez une liste pour les nouvelles colonnes en combinant le reste des colonnes:
Après cela, vous pouvez utiliser les
new_columns
autres solutions suggérées.la source
Vous pouvez également faire quelque chose comme
df = df[['x', 'y', 'a', 'b']]
En outre, vous pouvez obtenir la liste des colonnes avec:
La sortie produira quelque chose comme ceci:
Ce qui est alors facile à réorganiser manuellement.
la source
Construisez-le avec une liste au lieu d'un dictionnaire
la source
Vous pouvez également utiliser OrderedDict:
la source
Ajoutez le paramètre 'colonnes':
la source
Essayez l'indexation (vous voulez donc une solution générique non seulement pour cela, donc l'ordre des index peut être exactement ce que vous voulez):
Maintenant:
Est:
la source
Je trouve que c'est le plus simple et le plus fonctionnel:
la source