Ce problème se manifeste probablement parce que votre CSV a été enregistré avec son RangeIndex
(qui n'a généralement pas de nom). Le correctif devrait en fait être effectué lors de l'enregistrement du DataFrame, mais ce n'est pas toujours une option.
Éviter le problème: read_csv
avec index_col
argument
OMI, la solution la plus simple serait de lire la colonne sans nom comme index . Spécifiez un index_col=[0]
argument à pd.read_csv
, ceci lit dans la première colonne comme index.
df = pd.DataFrame('x', index=range(5), columns=list('abc'))
df
a b c
0 x x x
1 x x x
2 x x x
3 x x x
4 x x x
# Save DataFrame to CSV.
df.to_csv('file.csv')
pd.read_csv('file.csv')
Unnamed: 0 a b c
0 0 x x x
1 1 x x x
2 2 x x x
3 3 x x x
4 4 x x x
# Now try this again, with the extra argument.
pd.read_csv('file.csv', index_col=[0])
a b c
0 x x x
1 x x x
2 x x x
3 x x x
4 x x x
Remarque
Vous auriez pu éviter cela en premier lieu en utilisant index=False
lors de la création du CSV de sortie, si votre DataFrame ne possède pas d'index pour commencer.
df.to_csv('file.csv', index=False)
Mais comme mentionné ci-dessus, ce n'est pas toujours une option.
Solution Stopgap: Filtrer avec str.match
Si vous ne pouvez pas modifier le code pour lire / écrire le fichier CSV, vous pouvez simplement supprimer la colonne en filtrant avec str.match
:
df
Unnamed: 0 a b c
0 0 x x x
1 1 x x x
2 2 x x x
3 3 x x x
4 4 x x x
df.columns
# Index(['Unnamed: 0', 'a', 'b', 'c'], dtype='object')
df.columns.str.match('Unnamed')
# array([ True, False, False, False])
df.loc[:, ~df.columns.str.match('Unnamed')]
a b c
0 x x x
1 x x x
2 x x x
3 x x x
4 x x x