C'est la colonne d'index, passez index=False
pour ne pas l'écrire, voir la documentation
Exemple:
In [37]:
df = pd.DataFrame(np.random.randn(5,3), columns=list('abc'))
pd.read_csv(io.StringIO(df.to_csv()))
Out[37]:
Unnamed: 0 a b c
0 0 0.109066 -1.112704 -0.545209
1 1 0.447114 1.525341 0.317252
2 2 0.507495 0.137863 0.886283
3 3 1.452867 1.888363 1.168101
4 4 0.901371 -0.704805 0.088335
comparer avec:
In [38]:
pd.read_csv(io.StringIO(df.to_csv(index=False)))
Out[38]:
a b c
0 0.109066 -1.112704 -0.545209
1 0.447114 1.525341 0.317252
2 0.507495 0.137863 0.886283
3 1.452867 1.888363 1.168101
4 0.901371 -0.704805 0.088335
Vous pouvez également indiquer read_csv
que la première colonne est la colonne d'index en passant index_col=0
:
In [40]:
pd.read_csv(io.StringIO(df.to_csv()), index_col=0)
Out[40]:
a b c
0 0.109066 -1.112704 -0.545209
1 0.447114 1.525341 0.317252
2 0.507495 0.137863 0.886283
3 1.452867 1.888363 1.168101
4 0.901371 -0.704805 0.088335
skipcols
argument pourread_csv
, après avoir lu le csv, vous pouvez simplement le fairedf = df.drop(columns=df.columns[0])
ou vous pouvez simplement lire les colonnes en premier, puis passer les cols moins la première colonne quelque chose commecols = pd.read_csv( ....., nrows=1).columns
, puis relire à nouveaudf = pd.read_csv(....., usecols=cols[1:])
cela évite la surcharge de lecture une colonne superflue puis la laissant tomber par la suiteCe 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
avecindex_col
argumentOMI, 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.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
:la source
index_col=[0]
correctif a facilement résolu ce problème ennuyeux de «sans nom: 0» et évite au code de réinventer la roue.df.drop(df.filter(regex="Unname"),axis=1, inplace=True)
Un autre cas où cela pourrait se produire est si vos données ont été mal écrites dans votre
csv
pour que chaque ligne se termine par une virgule. Cela vous laissera avec une colonne sans nomUnnamed: x
à la fin de vos données lorsque vous essayez de les lire dans un fichierdf
.la source
usecols=range(0,10)
de couper la colonne sans nomPour obtenir toutes les colonnes sans nom, vous pouvez également utiliser des expressions régulières telles que
df.drop(df.filter(regex="Unname"),axis=1, inplace=True)
la source
Supprimez simplement cette colonne en utilisant:
del df['column_name']
la source