Bagaimana cara menghindari Python / Pandas membuat indeks dalam csv yang disimpan?

407

Saya mencoba untuk menyimpan csv ke folder setelah melakukan beberapa pengeditan pada file.

Setiap kali saya menggunakan pd.to_csv('C:/Path of file.csv')file csv memiliki kolom indeks yang terpisah. Saya ingin menghindari pencetakan indeks ke csv.

Saya mencoba:

pd.read_csv('C:/Path to file to edit.csv', index_col = False)

Dan untuk menyimpan file ...

pd.to_csv('C:/Path to save edited file.csv', index_col = False)

Namun, saya masih mendapatkan kolom indeks yang tidak diinginkan. Bagaimana saya bisa menghindari ini ketika saya menyimpan file saya?

Alexis
sumber
59
coba index=Falsealih-alihindex_col
Jeff
Bisakah kita menggunakan ini dalam ms excel juga?
Nabih Ibrahim Bawazir
Ya, Anda dapatpd.to_excel(r'file.xlsx', index = False)
bfree67
index_colbekerja read_html()juga.
caram

Jawaban:

606

Gunakan index=False.

df.to_csv('your.csv', index=False)
Mungkin rgbkrk
sumber
Solusi yang memalukan mudah, saya malu mencapai 6th ini nanti.
peluzza
89

Ada dua cara untuk menangani situasi di mana kita tidak ingin indeks disimpan dalam file csv.

  1. Seperti yang dinyatakan orang lain, Anda dapat menggunakan index = False sambil menyimpan
    dataframe ke file csv.

    df.to_csv('file_name.csv',index=False)

  2. Atau Anda dapat menyimpan kerangka data Anda seperti halnya dengan indeks, dan saat membaca Anda cukup letakkan kolom tanpa nama 0 yang berisi indeks sebelumnya. Sederhana!

    df.to_csv(' file_name.csv ')
    df_new = pd.read_csv('file_name.csv').drop(['unnamed 0'],axis=1)

blitu12345
sumber
1
"Dan saat membaca Anda cukup letakkan kolom tanpa nama 0 yang berisi indeks Anda sebelumnya" cara yang lebih baik untuk ini adalah tentukan pd.read_csv(..., index_col=[0], dan hindari panggilan "drop" tambahan.
cs95
30

Jika Anda tidak menginginkan indeks, baca file menggunakan:

import pandas as pd
df = pd.read_csv('file.csv', index_col=0)

simpan menggunakan

df.to_csv('file.csv', index=False)
amalik2205
sumber
2
Saya tidak percaya tidak ada yang melihat kesalahan. Untuk menyimpan ke csv, itu akan menjadidf.to_csv('file.csv', index=False)
MEdwin
1
Lol tidak ada yang memperhatikan. Terima kasih.
amalik2205
22

Seperti yang telah dinyatakan orang lain, jika Anda tidak ingin menyimpan kolom indeks di tempat pertama, Anda dapat menggunakan df.to_csv('processed.csv', index=False)

Namun, karena data yang biasanya Anda gunakan, memiliki semacam indeks sendiri, katakanlah kolom 'timestamp', saya akan menyimpan indeks dan memuat data yang menggunakannya.

Jadi, untuk menyimpan data yang diindeks, pertama-tama atur indeksnya dan kemudian simpan DataFrame:

df.set_index('timestamp')
df.to_csv('processed.csv')

Setelah itu, Anda dapat membaca data dengan indeks:

pd.read_csv('processed.csv', index_col='timestamp')

atau baca datanya, lalu atur indeks:

pd.read_csv('filename.csv')
pd.set_index('column_name')
Lucas P.
sumber
Jika saya mengatur index_col kemudian disimpan, saya masih memiliki kolom tanpa nama numerik di csv. (Python2)
smiller
14

Solusi lain jika Anda ingin menjaga kolom ini sebagai indeks.

pd.read_csv('filename.csv', index_col='Unnamed: 0')
salah khaled
sumber
1
Persis apa yang saya cari, terima kasih. Entah bagaimana itu membantu menerjemahkan konsep kunci primer secara transparan, bahkan ketika menggunakan csv
Tobbey
7

Jika Anda menginginkan format yang baik, pernyataan berikutnya adalah yang terbaik:

dataframe_prediction.to_csv('filename.csv', sep=',', encoding='utf-8', index=False)

Dalam hal ini Anda mendapatkan file csv dengan ',' sebagai pemisah antara kolom dan format utf-8. Selain itu, indeks numerik tidak akan muncul.

Iván Rodríguez
sumber