web-dev-qa-db-fra.com

Déplacer des colonnes dans les pandas DATAFRAME

J'ai lu les données du fichier csv dans un bloc de données composé de plus de 25 000 lignes et 15 colonnes et je dois déplacer toutes les lignes (y compris la plus à gauche -> index) d'une colonne à droite, afin d'obtenir un index vide. et être capable de le remplir avec des entiers. Les noms des colonnes doivent toutefois rester au même endroit. Donc, fondamentalement, je dois tout déplacer, sauf les noms de colonne, un endroit à droite.

 enter image description here

J'ai essayé de le réindexer, mais j'ai eu une erreur: 

ValueError: cannot reindex from a duplicate axis

Y a-t-il un moyen de faire ça?

6
puk789

Dans les pandas, vous pouvez uniquement créer une colonne à droite, à moins que vous ne joigniez deux bases de données. Ensuite, vous pouvez réorganiser comme bon vous semble.

import pandas as pd

df = pd.read_csv('data.csv', header=None, names = ['A','B','C'])

print(df)

    A   B   C
0   1   2   3
1   4   5   6
2   7   8   9
3  10  11  12

df['D'] = pd.np.nan # this creates an empty series
                    # and appends to the right

print(df)

    A   B   C   D
0   1   2   3 NaN
1   4   5   6 NaN
2   7   8   9 NaN
3  10  11  12 NaN

df = df[['D','A','B','C']] # rearrange as you like

print(df)

    D   A   B   C
0 NaN   1   2   3
1 NaN   4   5   6
2 NaN   7   8   9
3 NaN  10  11  12
10
Leb

J'ajouterais d'abord une nouvelle colonne avec:

df['new'] = df.index

que prendre les noms des colonnes de votre dataframe dans une liste avec:

colnames = df.columns.tolist()

Ensuite, vous pouvez les réorganiser selon vos besoins, par exemple en modifiant l'ordre pour obtenir la dernière colonne en tant que première et déplacer le reste d'une position à droite:

colnames = colnames[-1:] + colnames[:-1]

et réaffecter:

df = df[colnames]
4
Fabio Lamanna
df = YourDataFrame
col = "Your Column You Want To Move To The Start Of YourDataFrame" 
df = pd.concat([df[col],df.drop(col,axis=1)], axis=1)
0
Snowde