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?


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')


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.


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.


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.


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)

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())

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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.