Ini kolom indeks, lulus index=False
untuk tidak menuliskannya, lihat dokumen
Contoh:
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
dibandingkan dengan:
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
Anda juga bisa memberi tahu secara opsional read_csv
bahwa kolom pertama adalah kolom indeks dengan melewatkan 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
arg untukread_csv
, setelah membaca di csv yang bisa Anda lakukandf = df.drop(columns=df.columns[0])
atau Anda bisa membaca kolom di pertama dan kemudian melewati cols minus kolom pertama seperticols = pd.read_csv( ....., nrows=1).columns
dan kemudian membaca kembalidf = pd.read_csv(....., usecols=cols[1:])
ini menghindari overhead membaca kolom berlebihan dan kemudian menjatuhkannyaMasalah ini kemungkinan besar bermanifestasi karena CSV Anda disimpan bersama dengan
RangeIndex
(yang biasanya tidak memiliki nama). Perbaikan sebenarnya perlu dilakukan saat menyimpan DataFrame, tetapi ini tidak selalu merupakan opsi.Menghindari Masalah:
read_csv
denganindex_col
argumenIMO, solusi paling sederhana adalah dengan membaca kolom yang tidak disebutkan namanya sebagai indeks . Tentukan
index_col=[0]
argumen untukpd.read_csv
, ini dibaca di kolom pertama sebagai indeks.Solusi Stopgap: Memfilter dengan
str.match
Jika Anda tidak dapat mengubah kode untuk membaca / menulis file CSV, Anda bisa menghapus kolom dengan memfilter dengan
str.match
:sumber
index_col=[0]
memperbaiki dengan mudah memecahkan masalah ini mengganggu 'yang tidak disebutkan namanya: 0' dan suku cadang kode dari verbose menciptakan kembali roda.df.drop(df.filter(regex="Unname"),axis=1, inplace=True)
Kasus lain yang mungkin terjadi adalah jika data Anda tidak ditulis dengan benar
csv
agar setiap baris diakhiri dengan koma. Ini akan meninggalkan Anda dengan kolom yang tidak disebutkan namanyaUnnamed: x
di akhir data Anda ketika Anda mencoba membacanya menjadi adf
.sumber
usecols=range(0,10)
memotong kolom yang tidak disebutkan namanyaUntuk mendapatkan semua kolom Tanpa Nama, Anda juga dapat menggunakan regex seperti
df.drop(df.filter(regex="Unname"),axis=1, inplace=True)
sumber
Hapus saja kolom itu menggunakan:
del df['column_name']
sumber