J'ai le code suivant qui importe un fichier CSV. Il y a 3 colonnes et je veux définir les deux premières comme variables. Lorsque je règle la deuxième colonne sur la variable "efficience", la colonne d'index est également ajoutée. Comment puis-je me débarrasser de la colonne d'index?
df = pd.DataFrame.from_csv('Efficiency_Data.csv', header=0, parse_dates=False)
energy = df.index
efficiency = df.Efficiency
print efficiency
J'ai essayé d'utiliser
del df['index']
après avoir mis
energy = df.index
que j'ai trouvé dans un autre post mais qui donne "KeyError: 'index'"
DataFrames et Les séries ont toujours un index. Bien qu'il s'affiche à côté des colonnes, il ne s'agit pas d'une colonne. C'est pourquoi del df['index']
ne fonctionnait pas.
Si vous souhaitez remplacer l'index par de simples numéros séquentiels, utilisez df.reset_index()
.
Pour savoir pourquoi l’indice existe et comment il est utilisé, voir par exemple. 10 minutes de Pandas .
Lors de la lecture de et vers votre fichier CSV, incluez l'argument index=False
ainsi, par exemple:
df.to_csv(filename, index=False)
et lire du csv
df.read_csv(filename, index=False)
Cela devrait empêcher le problème afin que vous n'ayez pas besoin de le réparer plus tard.
df.reset_index(drop=True, inplace=True)
Vous pouvez définir l'une des colonnes comme un index dans le cas où il s'agisse d'un "id" par exemple. Dans ce cas, la colonne d'index sera remplacée par l'une des colonnes que vous avez choisies.
df.set_index('id', inplace=True)
Si votre problème est identique au mien, vous souhaitez simplement réinitialiser les en-têtes de colonne de 0 à la taille de la colonne. Faire
df = pd.DataFrame(df.values);
MODIFIER:
Pas une bonne idée si vous avez des types de données hétérogènes. Mieux vaut juste utiliser
df.columns = range(len(df.columns))
vous pouvez spécifier quelle colonne est un index dans votre fichier csv en utilisant le paramètre index_col de la fonction from_csv. Si cela ne résout pas le problème, veuillez fournir un exemple de vos données.
Une chose que je fais est df=df.reset_index()
puis df=df.drop(['index'],axis=1)