Es ist die Indexspalte, übergeben Sie, um index=False
sie nicht auszuschreiben, siehe die Dokumente
Beispiel:
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
vergleichen mit:
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
Optional können Sie auch feststellen, read_csv
dass die erste Spalte die Indexspalte ist, indem Sie Folgendes übergeben 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 dafürread_csv
, nach dem Lesen in der CSV könnten Sie einfach tundf = df.drop(columns=df.columns[0])
oder Sie könnten einfach die Spalten zuerst einlesen und dann die Spalten abzüglich der ersten Spalte so etwas wie übergebencols = pd.read_csv( ....., nrows=1).columns
und dann erneut lesen.df = pd.read_csv(....., usecols=cols[1:])
Dies vermeidet den Overhead des Lesens eine überflüssige Spalte und dann fallen lassenDieses Problem tritt höchstwahrscheinlich auf, weil Ihre CSV zusammen mit ihrer
RangeIndex
(die normalerweise keinen Namen hat) gespeichert wurde . Das Update müsste tatsächlich beim Speichern des DataFrame durchgeführt werden, dies ist jedoch nicht immer eine Option.Das Problem vermeiden:
read_csv
mitindex_col
ArgumentIMO, die einfachste Lösung wäre, die unbenannte Spalte als Index zu lesen . Geben Sie ein
index_col=[0]
Argument anpd.read_csv
, das in der ersten Spalte als Index gelesen wird.Notlösung: Filtern mit
str.match
Wenn Sie den Code zum Lesen / Schreiben der CSV-Datei nicht ändern können, können Sie die Spalte einfach entfernen, indem Sie filtern mit
str.match
:quelle
index_col=[0]
Fix löste leicht dieses lästige Problem von 'unbenannt: 0' und ersparte Code durch die ausführliche Neuerfindung des Rades.df.drop(df.filter(regex="Unname"),axis=1, inplace=True)
Ein anderer Fall, in dem dies passieren könnte, ist, wenn Ihre Daten nicht ordnungsgemäß in Ihre Daten geschrieben
csv
wurden, damit jede Zeile mit einem Komma endet. Dadurch wirdUnnamed: x
am Ende Ihrer Daten eine unbenannte Spalte angezeigt, wenn Sie versuchen, sie in eine zu lesendf
.quelle
usecols=range(0,10)
die unbenannte Spalte abgeschnittenUm alle unbenannten Spalten abzurufen, können Sie auch Regex wie z
df.drop(df.filter(regex="Unname"),axis=1, inplace=True)
quelle
Löschen Sie diese Spalte einfach mit:
del df['column_name']
quelle