Pandas: Ajuste no. de filas máximas

138

Tengo un problema para ver lo siguiente DataFrame:

n = 100
foo = DataFrame(index=range(n))
foo['floats'] = np.random.randn(n)
foo

El problema es que no imprime todas las filas por defecto en el cuaderno de ipython, pero tengo que cortar para ver las filas resultantes. Incluso la siguiente opción no cambia la salida:

pd.set_option('display.max_rows', 500)

¿Alguien sabe cómo mostrar toda la matriz?

Andy
fuente
Cuando ejecuto su código en un cuaderno predeterminado (es decir, sin perfil de configuración especial), obtengo una tabla bastante impresa que se puede desplazar con todos los valores. FYI, mis pandas .__ versión__ = 0.9.1 (no estoy seguro si esto importa)
BubbleGuppies
Quise decir shell normal, no ipython
Ryan Saxe
Tengo la sensación de que esto podría ser un error en 0.11 + ...
Andy Hayden
Hola Andy. ¿Ya ha sido confirmado por Wes? ¿Dónde puedo archivar este error? ¿Hay alguna solución?
Andy
Acabo de archivarlo aquí , sé que hubo algunos cambios de última hora en 0.11 en la reimpresión de DataFrame, así que los envié en el informe de error. Le informará sobre la solución alternativa.
Andy Hayden

Respuestas:

233

Conjunto display.max_rows:

pd.set_option('display.max_rows', 500)

Para versiones anteriores de pandas (<= 0.11.0) necesita cambiar ambos display.heighty display.max_rows.

pd.set_option('display.height', 500)
pd.set_option('display.max_rows', 500)

Ver también pd.describe_option('display').

Puede establecer una opción solo temporalmente por esta vez de esta manera:

from IPython.display import display
with pd.option_context('display.max_rows', 100, 'display.max_columns', 10):
    display(df) #need display to show the dataframe when using with in jupyter
    #some pandas stuff

También puede restablecer una opción a su valor predeterminado de esta manera:

pd.reset_option('display.max_rows')

Y restablecerlos todos de nuevo:

pd.reset_option('all')

Wouter Overmeire
fuente
66
+1 para pd.describe_option ('display'), no conocía todas las opciones
nom-mon-ir
41
La altura ahora está en desuso, por lo que la opción display.max_rows es suficiente.
hanleyhansen
9
Para cualquiera que solo esté mirando la respuesta aceptada: úsela with pd.option_context('display.height', 500, 'display.max_rows', 500):para configurarla solo temporalmente.
BallpointBen
Debería corregir o dar la mejor manera de lograr esto. Utilice None y no se limite a 500. # Visualice temporalmente todas las filas y columnas con pd.option_context ('display.max_rows', None, 'display.max_columns', None): display (df_facilities) El código anterior solo tendrá efecto en la celda que contiene el código, por lo que no es necesario reiniciar en otras celdas.
MGB.py
35

Personalmente, me gusta configurar las opciones directamente con una declaración de asignación, ya que es fácil de encontrar a través de la finalización de pestañas gracias a iPython. Me resulta difícil recordar cuáles son los nombres exactos de las opciones, por lo que este método funciona para mí.

Por ejemplo, todo lo que tengo que recordar es que comienza con pd.options

pd.options.<TAB>

ingrese la descripción de la imagen aquí

La mayoría de las opciones están disponibles en display

pd.options.display.<TAB>

ingrese la descripción de la imagen aquí

A partir de aquí, suelo mostrar cuál es el valor actual de esta manera:

pd.options.display.max_rows
60

Luego lo configuro a lo que quiero que sea:

pd.options.display.max_rows = 100

Además, debe conocer el administrador de contexto para las opciones, que establece temporalmente las opciones dentro de un bloque de código. Pase el nombre de la opción como una cadena seguida del valor que desea que sea. Puede pasar cualquier cantidad de opciones en la misma línea:

with pd.option_context('display.max_rows', 100, 'display.max_columns', 10):
    some pandas stuff

También puede restablecer una opción a su valor predeterminado de esta manera:

pd.reset_option('display.max_rows')

Y restablecerlos todos de nuevo:

pd.reset_option('all')

Todavía es perfectamente bueno establecer opciones a través de pd.set_option. Simplemente encuentro que usar los atributos directamente es más fácil y hay menos necesidad de get_optiony set_option.

Ted Petrou
fuente
44
with pd.option_contextes el método más limpio entre estas respuestas; menos efectos secundarios
ijoseph
10

Ya se señaló en este comentario y en esta respuesta , pero intentaré dar una respuesta más directa a la pregunta:

from IPython.display import display
import numpy as np
import pandas as pd

n = 100
foo = pd.DataFrame(index=range(n))
foo['floats'] = np.random.randn(n)

with pd.option_context("display.max_rows", foo.shape[0]):
    display(foo)

pandas.option_context está disponible desde pandas 0.13.1 ( notas de lanzamiento de pandas 0.13.1 ). De acuerdo a esto ,

[it] le permite [s] ejecutar un bloque de código con un conjunto de opciones que vuelven a la configuración anterior cuando sale del bloque with.

Guilherme Beltramini
fuente
9

Como @hanleyhansen señaló en un comentario, a partir de la versión 0.18.1, la display.heightopción está en desuso y dice "usar display.max_rowsen su lugar". Entonces solo tienes que configurarlo así:

pd.set_option('display.max_rows', 500)

Consulte las Notas de la versión : documentación de pandas 0.18.1 :

Display.height, display.width en desuso ahora solo es una opción de formato que no controla la activación del resumen, similar a <0.11.0.

nealmcb
fuente
7
pd.set_option('display.max_rows', 500)
df

¡No funciona en Jupyter!
En su lugar use:

pd.set_option('display.max_rows', 500)
df.head(500)
Adrien Renaud
fuente
3

Como en esta respuesta a una pregunta similar , no hay necesidad de piratear la configuración. Es mucho más simple escribir:

print(foo.to_string())
Ninjakannon
fuente
1
No deberías convertirlo a cadena. No es lo que Andy pidió.
simtim
1
@simtim Andy preguntó cómo "mostrar la matriz completa". Esto hará eso y es mucho más simple que la respuesta aceptada.
Ninjakannon