To kolumna indeksu, przejdź, index=False
aby jej nie pisać, zobacz dokumentację
Przykład:
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
porównać z:
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
Możesz również opcjonalnie powiedzieć, read_csv
że pierwsza kolumna jest kolumną indeksu, przekazując 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
argumentu zaread_csv
, po przeczytaniu w csv mógłbyś po prostu zrobićdf = df.drop(columns=df.columns[0])
lub po prostu najpierw przeczytać kolumny, a następnie przekazać kolumny minus pierwsza kolumna coś w stylu,cols = pd.read_csv( ....., nrows=1).columns
a następnie ponownie przeczytaćdf = pd.read_csv(....., usecols=cols[1:])
to pozwala uniknąć narzutu czytania zbędna kolumna, a następnie upuszczenie jej późniejTen problem najprawdopodobniej występuje, ponieważ
RangeIndex
plik CSV został zapisany wraz z plikiem (który zwykle nie ma nazwy). Naprawa musiałaby zostać wykonana podczas zapisywania DataFrame, ale nie zawsze jest to opcja.Unikanie problemu:
read_csv
zindex_col
argumentacjąIMO, najprostszym rozwiązaniem byłoby odczytanie nienazwanej kolumny jako indeksu . Podaj
index_col=[0]
argument dopd.read_csv
, który wczyta pierwszą kolumnę jako indeks.Rozwiązanie tymczasowe: filtrowanie za pomocą
str.match
Jeśli nie możesz zmodyfikować kodu w celu odczytania / zapisu pliku CSV, możesz po prostu usunąć kolumnę, filtrując za pomocą
str.match
:źródło
index_col=[0]
poprawka z łatwością rozwiązała ten irytujący problem „nienazwanego: 0” i oszczędza kod przed szczegółowym wymyślaniem koła.df.drop(df.filter(regex="Unname"),axis=1, inplace=True)
Innym przypadkiem, w którym może się to zdarzyć, jest niepoprawne zapisanie danych w Twoim,
csv
aby każdy wiersz kończył się przecinkiem. Spowoduje to pozostawienie nienazwanej kolumnyUnnamed: x
na końcu danych podczas próby odczytania ich do plikudf
.źródło
usecols=range(0,10)
odcinać nienazwaną kolumnęAby uzyskać przejęcie wszystkich kolumn bez nazwy, możesz również użyć wyrażenia regularnego, takiego jak
df.drop(df.filter(regex="Unname"),axis=1, inplace=True)
źródło
Po prostu usuń tę kolumnę za pomocą:
del df['column_name']
źródło