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.