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.
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?
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
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]
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)