J'ai un DF mydataframe et il a plusieurs colonnes (plus de 75 colonnes) avec un index numérique par défaut:
mydataframe.columns.get_loc("Col2")
Je dois organiser / changer la position comme suit:
Col1 Col3 Col2 ... Coln
Je peux obtenir l'index de Col2 en utilisant:
Col1 Col2 Col3 ... Coln
mais je ne semble pas être en mesure de comprendre comment permuter, sans lister manuellement toutes les colonnes, puis réorganiser manuellement dans une liste.
4 Réponses :
Essayez :
new_cols = [Col1, Col3, Col2] + df.columns[3:] df = df[new_cols]
Comment procéder:
code:
l = list(df)
i1, i2 = l.index('Col2'), l.index('Col3')
l[i2], l[i1] = l[i1], l[i2]
df = df[l]
J'ai pu développer cela pour répondre à mes besoins. Merci.
Utilisation de np.r_ pour créer un tableau d'index de colonne:
Exemple donné comme suit:
df:
col1 col2 col3 col4 col5 col6 col7 col8 col9 col10
0 0 1 2 3 4 5 6 7 8 9
1 10 11 12 13 14 15 16 17 18 19
i, j = df.columns.slice_locs('col2', 'col10')
df[df.columns[np.r_[:i, i+1, i, i+2:j]]]
Out[142]:
col1 col3 col2 col4 col5 col6 col7 col8 col9 col10
0 0 2 1 3 4 5 6 7 8 9
1 10 12 11 13 14 15 16 17 18 19
J'imagine que vous voulez ce que @sentence suppose. Vous souhaitez permuter les positions de 2 colonnes, où qu'elles se trouvent.
Il s'agit d'une approche créative:
df = pd.DataFrame(
np.arange(25).reshape(5, 5)
).add_prefix('Col')
d = {'Col3': 'Col2', 'Col2': 'Col3'}
k = lambda x: df.columns.get_loc(d.get(x, x))
df[sorted(df, key=k)]
Col0 Col1 Col3 Col2 Col4
0 0 1 3 2 4
1 5 6 8 7 9
2 10 11 13 12 14
3 15 16 18 17 19
4 20 21 23 22 24