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?


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)

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)


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)

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')

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')

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.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.