Bagaimana cara menampilkan informasi dataframe penuh (tidak terpotong) dalam html saat mengonversi dari panda dataframe ke html?

213

Saya mengonversi panda dataframe ke output html menggunakan DataFrame.to_htmlfungsi. Ketika saya menyimpan ini ke file html terpisah, file ini menunjukkan output terpotong.

Misalnya, di kolom TEKS saya,

df.head(1) akan ditampilkan

Film ini adalah upaya yang sangat baik ...

dari pada

Film ini merupakan upaya yang sangat baik dalam mendekonstruksi sentimen sosial yang kompleks yang berlaku selama periode ini.

Rendisi ini baik-baik saja dalam hal format layar-friendly dari dataframe panda besar, tapi saya memerlukan file html yang akan menampilkan data tabular lengkap yang terkandung dalam dataframe, yaitu, sesuatu yang akan menunjukkan elemen teks yang terakhir daripada elemen cuplikan teks sebelumnya.

Bagaimana saya bisa menampilkan data teks yang lengkap dan tidak terpotong untuk setiap elemen di kolom TEXT saya dalam versi informasi html? Saya akan membayangkan bahwa tabel html harus menampilkan sel-sel panjang untuk menunjukkan data lengkap, tetapi sejauh yang saya mengerti, hanya parameter lebar kolom yang dapat dilewatkan ke dalam DataFrame.to_htmlfungsi.

Amy
sumber

Jawaban:

426

Setel display.max_colwidthopsi ke -1:

pd.set_option('display.max_colwidth', -1)

set_option docs

Misalnya, dalam iPython, kita melihat bahwa informasi tersebut terpotong hingga 50 karakter. Apa pun yang kelebihan elips:

masukkan deskripsi gambar di sini

Jika Anda mengatur display.max_colwidthopsi, informasi akan ditampilkan sepenuhnya:

masukkan deskripsi gambar di sini

behzad.nouri
sumber
11
Menurut dokumen Anda harus mengaturnya Noneuntuk berarti tidak terbatas.
kynan
21
Jawabannya benar, yaitu tidak harus diatur ke None. Kalau tidak, akan mendapatkan ValueError: Value must have type '<class 'int'>'kesalahan.
xpt
Itu yang saya bicarakan!
Ivan
2
The max_columnsJawaban bekerja untuk saya, yang menggunakan Nonesebagai argumen kedua set_option.
kilojoule
9
Jika Anda ingin opsi tampilan ini diterapkan sekali saja, dan tidak secara permanen, Anda juga dapat menggunakan manajer konteks seperti:with pd.option_context('display.max_colwidth', -1): display(df)
SA
115
pd.set_option('display.max_columns', None)  

id (argumen kedua) dapat sepenuhnya menampilkan kolom.

pengguna7579768
sumber
Sedikit ke samping, jumlah kolom sedang terpotong untuk saya, seperti yang diwakili oleh dan ellipsis (...) di dekat tengah meja saya. Terima kasih!
four43
4
Ini bekerja untuk saya dan bukan jawaban yang lain. Saya menggunakan Python 3.6
Durga Swaroop
1
Ini tidak berhasil untuk saya di Python 2.7, tetapi jawaban pertama oleh @ behzad.nouri berhasil.
r3robertson
Ini harus menjadi jawaban yang diterima. Opsi accept accept with with this max_colwidthdapat memecahkan masalah terpotong yang disebabkan oleh bidang yang memiliki nilai terlalu panjang. Namun, saya pikir masalah terpotong untuk kebanyakan orang sebenarnya terlalu banyak kolom. Jadi, ini yang max_columnsharus diterima.
Christopher
@ Chrisopher, OP bertanya tentang lebar satu kolom, banyak yang datang ke sini untuk keduanya sehingga jawaban oleh Karl lebih relevan bagi mereka.
Alexei Martianov
87

Saat pd.set_option('display.max_columns', None)menetapkan jumlah kolom maksimum yang ditampilkan, opsi pd.set_option('display.max_colwidth', -1)menetapkan lebar maksimum setiap bidang.

Untuk keperluan saya, saya menulis fungsi pembantu kecil untuk sepenuhnya mencetak bingkai data besar tanpa mempengaruhi sisa kode, itu juga memformat ulang nomor float dan menetapkan lebar tampilan virtual. Anda dapat mengadopsinya untuk kasus penggunaan Anda.

def print_full(x):
    pd.set_option('display.max_rows', len(x))
    pd.set_option('display.max_columns', None)
    pd.set_option('display.width', 2000)
    pd.set_option('display.float_format', '{:20,.2f}'.format)
    pd.set_option('display.max_colwidth', None)
    print(x)
    pd.reset_option('display.max_rows')
    pd.reset_option('display.max_columns')
    pd.reset_option('display.width')
    pd.reset_option('display.float_format')
    pd.reset_option('display.max_colwidth')
Karl Adler
sumber
ubah -1 ke "None" pada baris di atas cetak (x) untuk menghindari peringatan penghentian
Mark Zhukovsky
1

Bagi mereka yang ingin melakukan ini di dask. Saya tidak dapat menemukan opsi serupa di dask tetapi jika saya hanya melakukan ini di notebook yang sama untuk panda, ia juga berfungsi untuk dask.

import pandas as pd
import dask.dataframe as dd
pd.set_option('display.max_colwidth', -1) # This will set the no truncate for pandas as well as for dask. Not sure how it does for dask though. but it works

train_data = dd.read_csv('./data/train.csv')    
train_data.head(5)
Prabhat
sumber
0

Kode berikut menghasilkan kesalahan di bawah ini:

pd.set_option('display.max_colwidth', -1)

FutureWarning: Melewati bilangan bulat negatif tidak lagi digunakan dalam versi 1.0 dan tidak akan didukung di versi yang akan datang. Alih-alih, gunakan Tidak Ada untuk tidak membatasi lebar kolom.

Sebaliknya, gunakan:

pd.set_option('display.max_colwidth', None)

Ini menyelesaikan tugas dan mematuhi versi panda berikut versi 1.0.

Patrick
sumber