Saya memiliki dataframe dalam panda yang ingin saya tulis ke file CSV. Saya melakukan ini menggunakan:
df.to_csv('out.csv')
Dan mendapatkan kesalahan:
UnicodeEncodeError: 'ascii' codec can't encode character u'\u03b1' in position 20: ordinal not in range(128)
Apakah ada cara untuk menyiasatinya dengan mudah (yaitu saya memiliki karakter unicode dalam bingkai data saya)? Dan apakah ada cara untuk menulis ke file yang dibatasi tab daripada menggunakan CSV misalnya metode 'to-tab' (yang saya pikir tidak ada)?
index=False
untuk menjatuhkan indeks.Ketika Anda menyimpan
DataFrame
objek ke dalam file csv dengan menggunakanto_csv
metode, Anda mungkin tidak akan perlu untuk menyimpan indeks sebelumnya masing-masing baris dariDataFrame
objek.Anda dapat menghindari itu dengan mengirimkan
False
nilai boolean keindex
parameter.Agak suka:
Jadi jika objek DataFrame Anda adalah sesuatu seperti:
File csv akan menyimpan:
alih-alih (kasus ketika nilai default
True
disahkan)sumber
df.rename_axis('index_name')
? itu tidak mengubah file itu sendiriUntuk menulis panda DataFrame ke file CSV, Anda perlu
DataFrame.to_csv
. Fungsi ini menawarkan banyak argumen dengan default yang masuk akal bahwa Anda akan lebih sering tidak perlu menimpa sesuai dengan kasus penggunaan spesifik Anda. Misalnya, Anda mungkin ingin menggunakan pemisah yang berbeda, mengubah format datetime, atau menjatuhkan indeks saat menulis.to_csv
memiliki argumen yang dapat Anda berikan untuk memenuhi persyaratan ini.Berikut adalah tabel yang mencantumkan beberapa skenario umum penulisan ke file CSV dan argumen yang sesuai yang dapat Anda gunakan untuk mereka.
sumber
Hal lain yang dapat Anda coba jika Anda mengalami masalah penyandian ke 'utf-8' dan ingin sel demi sel Anda dapat mencoba yang berikut ini.
Python 2
(Di mana "df" adalah objek DataFrame Anda.)
Lalu coba:
Anda dapat memeriksa penyandian kolom dengan:
Peringatan: kesalahan = 'abaikan' hanya akan menghilangkan karakter mis
Python 3
sumber
Terkadang Anda menghadapi masalah ini jika Anda menentukan pengkodean UTF-8 juga. Saya sarankan Anda untuk menentukan penyandian saat membaca file dan penyandian yang sama saat menulis ke file. Ini bisa menyelesaikan masalah Anda.
sumber
Contoh ekspor dalam file dengan path lengkap pada Windows dan seandainya file Anda memiliki header :
Contoh jika Anda ingin menyimpan dalam folder di direktori yang sama dengan skrip Anda, dengan pengkodean utf-8 dan tab sebagai pemisah :
sumber
itu bisa bukan jawaban untuk kasus ini, tetapi karena saya memiliki pesan kesalahan yang sama dengan
.to_csv
saya mencoba.toCSV('name.csv')
dan pesan kesalahan berbeda ("SparseDataFrame' object has no attribute 'toCSV'
). Jadi masalahnya diselesaikan dengan memutar kerangka data menjadi kerangka data padatsumber
.toCSV
dan tidak.to_csv
. Anda lupa garis bawah