¿Hay una forma concisa de mostrar todas las filas en pandas solo para el comando actual?

A veces quiero mostrar todas las filas en un DataFrame de pandas, pero solo para un solo comando o bloque de código.

Por supuesto, puedo configurar la opción de visualización “max_rows” en un número grande, pero luego tengo que repetir el comando para volver a mi configuración preferida. (Me gusta 12 filas máximo, personalmente).

pd.options.display.max_rows=1000 myDF pd.options.display.max_rows=12 

Eso es molesto.

Leí en la documentación que puedo usar la función pd.option_context () para lograr esto si combino mi comando con una statement “con”:

 with pd.option_context("display.max_rows", 1000): myDF 

No pude hacer que eso funcionara (no se devuelve ninguna salida). ¡Pero creo que una solución de este tipo aún sería demasiado tipificada para el uso incidental rutinario!

¡Me gustaría que hubiera alguna forma rápida en Pythonic para anular las opciones de visualización!
¿Existe uno? ¿He pasado por alto algo?

Me gusta cómo se puede modificar el número de filas que genera la función .head () pasándole un argumento para el número de filas, pero aún así debe ser inferior a la configuración “display.max_rows” …

Sé que podría mantener la configuración “display.max_rows” realmente alta todo el tiempo y luego aplicar una función .head (12) la mayor parte del tiempo, pero creo que la mayoría de las personas estaría de acuerdo en lo molesto que sería.

Soy consciente de que uno puede ver todos (o la mayoría de) los valores en una serie de pandas pasándolos a una función principal como list (). Pero eso es difícil de hacer con un DF. Además, es difícil de leer cuando no está en un formato tabular.

Al igual que la solución para mi primera pregunta , imagino que probablemente haya una forma de escribir mi propia función (para colocarla en un script de inicio), pero no estoy seguro de cuál sea la mejor manera de escribirla.

Podría escribir una función que llame explícitamente a la display

Por ejemplo, considera esta función:

 from IPython.display import display def show_more(df, lines): foo = 1 display(df) foo = 2 

Cuando llamo a la función (solo la probé):

 >> show_more(df, 1000) ... # <- Shows here the DF 

luego muestra el dataframe, aunque la línea foo = 2 se ejecuta después . De ello se deduce que puede configurar las opciones en lugar de la línea foo = 1 y anularlas en la línea foo = 2 . De hecho, puedes usar el administrador de contexto de tu pregunta, probablemente.

Esto no mostrará nada porque no devuelve nada:

 with pd.option_context("display.max_rows", 1000): myDF 

La display llamadas dentro del bloque with debería funcionar:

 with pd.option_context("display.max_rows", 1000): display(myDF) 

Esto parece funcionar como se esperaba en pandas 0.22.0 (importando solo pandas, sin IPython):

 import pandas as pd with pd.option_context("display.max_rows", 1000): myDF 

Supongo que eso se debe a que el comportamiento predeterminado es devolver la reproducción de myDF. Los IDEs bien pueden anular esto.

Si eso es demasiada escritura, entonces una impresión sencilla en el terminal también funciona cuando está envuelta en una función:

 from __future__ import print_statement # for python2 def show_rows(df, nrows=1000): with pd.option_context("display.max_rows", nrows): print(df) 

Esto es lo que hago:

df.head(df.shape[0])

Nota: Si está intentando eliminar los puntos suspensivos de la mitad de un largo dataframe, consulte las otras respuestas. Esta es solo una forma concisa de usar head para mostrar todo, en lugar de usar IPython.display .