¿Cómo mostrar información de trama de datos completa (no truncada) en html cuando se convierte de trama de datos de pandas a html?

214

Convertí un marco de datos de pandas a una salida html usando la DataFrame.to_htmlfunción. Cuando guardo esto en un archivo html separado, el archivo muestra la salida truncada.

Por ejemplo, en mi columna TEXTO,

df.head(1) Mostrará

La película fue un excelente esfuerzo ...

en vez de

La película fue un excelente esfuerzo para deconstruir los complejos sentimientos sociales que prevalecieron durante este período.

Esta versión está bien en el caso de un formato amigable para la pantalla de un marco de datos de pandas masivo, pero necesito un archivo html que muestre datos tabulares completos contenidos en el marco de datos, es decir, algo que muestre el último elemento de texto en lugar del fragmento de texto anterior.

¿Cómo podría mostrar los datos de texto completos y no truncados para cada elemento en mi columna TEXTO en la versión html de la información? Me imagino que la tabla html tendría que mostrar celdas largas para mostrar los datos completos, pero que yo entienda, solo los parámetros de ancho de columna se pueden pasar a la DataFrame.to_htmlfunción.

Amy
fuente

Respuestas:

427

Establezca la display.max_colwidthopción para -1:

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

set_option docs

Por ejemplo, en iPython, vemos que la información se trunca a 50 caracteres. Cualquier cosa en exceso es elipsis:

ingrese la descripción de la imagen aquí

Si configura la display.max_colwidthopción, la información se mostrará completamente:

ingrese la descripción de la imagen aquí

behzad.nouri
fuente
12
De acuerdo con los documentos, debe configurarlo en Noneilimitado.
kynan
21
La respuesta es correcta, es decir, no debe establecerse en None. De lo contrario, obtendrá un ValueError: Value must have type '<class 'int'>'error.
xpt
¡De eso estoy hablando!
Ivan
2
La max_columnsrespuesta funcionó para mí, que utiliza Nonecomo segundo argumento de set_option.
kilojulios
10
Si desea que estas opciones de visualización se apliquen solo una vez, y no de forma permanente, también puede usar el administrador de contexto como tal:with pd.option_context('display.max_colwidth', -1): display(df)
SA
115
pd.set_option('display.max_columns', None)  

id (segundo argumento) puede mostrar completamente las columnas.

user7579768
fuente
Muy poco aparte, el número de columnas se estaba truncando para mí, como lo representan los puntos suspensivos (...) cerca del centro de mi mesa. ¡Gracias!
four43 el
44
Esto funcionó para mí y no la otra respuesta. Estoy usando Python 3.6
Durga Swaroop el
1
Esto no funcionó para mí en Python 2.7, pero la primera respuesta de @ behzad.nouri sí.
r3robertson
Esta debería ser la respuesta aceptada. La respuesta de aceptación actual con opción max_colwidthpuede resolver el problema truncado causado por un campo que tiene valores demasiado largos. Sin embargo, creo que los problemas truncados para la mayoría de las personas son en realidad demasiadas columnas. Entonces, este max_columnsdebería ser el aceptado.
Christopher
@Christopher, OP preguntó sobre el ancho de una columna, muchos vienen aquí para ambos, por lo que la respuesta de Karl es más relevante para ellos.
Alexei Martianov
87

Mientras pd.set_option('display.max_columns', None)establece el número de columnas máximas que se muestran, la opción pd.set_option('display.max_colwidth', -1)establece el ancho máximo de cada campo individual.

Para mis propósitos, escribí una pequeña función auxiliar para imprimir completamente marcos de datos enormes sin afectar el resto del código, también reformatea los números flotantes y establece el ancho de la pantalla virtual. Puede adoptarlo para sus casos de uso.

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
fuente
cambie -1 a "Ninguno" en la línea arriba de la impresión (x) para evitar la advertencia de desaprobación
Mark Zhukovsky
1

Para aquellos que buscan hacer esto en dask. No pude encontrar una opción similar en dask, pero si simplemente hago esto en el mismo cuaderno para pandas, también funciona para 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
fuente
0

El siguiente código da como resultado el siguiente error:

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

FutureWarning: pasar un número entero negativo está en desuso en la versión 1.0 y no será compatible en versiones futuras. En su lugar, use Ninguno para no limitar el ancho de la columna.

En cambio, use:

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

Esto lleva a cabo la tarea y cumple con las versiones de pandas que siguen a la versión 1.0.

Patricio
fuente