Pandas: Einstellung Nr. von max Zeilen


138

Ich habe ein Problem beim Anzeigen von Folgendem DataFrame:

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

Das Problem ist, dass nicht alle Zeilen standardmäßig in ipython notebook gedruckt werden, aber ich muss schneiden, um die resultierenden Zeilen anzuzeigen. Auch die folgende Option ändert die Ausgabe nicht:

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

Weiß jemand, wie man das gesamte Array anzeigt?


Wenn ich Ihren Code in einem Standardnotizbuch (dh ohne spezielles Konfigurationsprofil) ausführe, erhalte ich eine hübsche gedruckte Tabelle, die mit allen Werten scrollbar ist. Zu Ihrer Information, meine Pandas .__ version__ = 0.9.1 (nicht sicher, ob dies wichtig ist)
BubbleGuppies

Ich meinte normale Shell, nicht Ipython
Ryan Saxe

Ich habe das Gefühl, dass dies ein Fehler in 0.11 + sein könnte ...
Andy Hayden

Hallo Andy. Wurde dies bereits von Wes bestätigt? Wo kann ich diesen Fehler melden? Gibt es eine Problemumgehung?
Andy

Ich legte es nur hier , ich weiß , dass es in 0,11 an den Datenrahmen repr einige Änderungen in letzter Minute waren so ich die in der Bug - Report Kopie zugesendet. Informiert Sie über die Problemumgehung.
Andy Hayden

Antworten:


233

Set display.max_rows:

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

Bei älteren Versionen von Pandas (<= 0.11.0) müssen Sie sowohl display.heightals auch ändern display.max_rows.

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

Siehe auch pd.describe_option('display').

Sie können eine Option nur vorübergehend für dieses eine Mal wie folgt festlegen :

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

Sie können eine Option auch wie folgt auf ihren Standardwert zurücksetzen:

pd.reset_option('display.max_rows')

Und alle zurücksetzen:

pd.reset_option('all')


6
+1 für die pd.describe_option ('display') kannte ich nicht alle Optionen
nom-mon-ir

41
Die Höhe ist jetzt veraltet, sodass die Option display.max_rows ausreicht.
Hanleyhansen

9
Für alle, die nur die akzeptierte Antwort betrachten: Verwenden Sie with pd.option_context('display.height', 500, 'display.max_rows', 500):diese Option, um diese nur vorübergehend festzulegen.
BallpointBen

Ich sollte korrigieren oder den besten Weg geben, um dies zu erreichen. Verwenden Sie None und beschränken Sie sich nicht auf 500. # Temporäre Anzeige aller Zeilen und Spalten mit pd.option_context ('display.max_rows', None, 'display.max_columns', None): display (df_facilities) Der obige Code wird nur wirksam in der Zelle, die den Code enthält, sodass in anderen Zellen kein Zurücksetzen erforderlich ist.
MGB.py

35

Persönlich mag ich es, die Optionen direkt mit einer Zuweisungsanweisung festzulegen, da sie dank iPython leicht über die Tab-Vervollständigung zu finden sind. Es fällt mir schwer, mich an die genauen Optionsnamen zu erinnern, daher funktioniert diese Methode für mich.

Zum Beispiel muss ich mich nur daran erinnern, dass es mit beginnt pd.options

pd.options.<TAB>

Geben Sie hier die Bildbeschreibung ein

Die meisten Optionen sind unter verfügbar display

pd.options.display.<TAB>

Geben Sie hier die Bildbeschreibung ein

Von hier aus gebe ich normalerweise den aktuellen Wert wie folgt aus:

pd.options.display.max_rows
60

Ich stelle es dann auf das ein, was ich möchte:

pd.options.display.max_rows = 100

Außerdem sollten Sie den Kontextmanager für Optionen kennen, der die Optionen vorübergehend in einem Codeblock festlegt. Übergeben Sie den Optionsnamen als Zeichenfolge, gefolgt von dem gewünschten Wert. Sie können eine beliebige Anzahl von Optionen in derselben Zeile übergeben:

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

Sie können eine Option auch wie folgt auf ihren Standardwert zurücksetzen:

pd.reset_option('display.max_rows')

Und alle zurücksetzen:

pd.reset_option('all')

Es ist immer noch sehr gut, Optionen über einzustellen pd.set_option. Ich finde es einfach einfacher, die Attribute direkt zu verwenden, und es besteht weniger Bedarf an get_optionund set_option.


4
with pd.option_contextist die sauberste Methode unter diesen Antworten; geringste Nebenwirkungen.
Ijoseph

10

Es wurde bereits in diesem Kommentar und in dieser Antwort darauf hingewiesen , aber ich werde versuchen, eine direktere Antwort auf die Frage zu geben:

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 ist seit pandas 0.13.1 ( Versionshinweise zu pandas 0.13.1 ) verfügbar . Nach dieser ,

Mit [it] können Sie [s] einen Codeblock mit einer Reihe von Optionen ausführen, die beim Beenden des with-Blocks auf vorherige Einstellungen zurückgesetzt werden.


9

Wie @hanleyhansen in einem Kommentar feststellte, ist die display.heightOption ab Version 0.18.1 veraltet und lautet " display.max_rowsstattdessen verwenden". Sie müssen es also nur so konfigurieren:

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

Siehe die Dokumentation zu Versionshinweisen - Pandas 0.18.1 :

Veraltete display.height, display.width ist jetzt nur noch eine Formatierungsoption, die das Auslösen der Zusammenfassung nicht steuert, ähnlich wie bei <0.11.0.


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

Funktioniert nicht in Jupyter!
Verwenden Sie stattdessen:

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

3

Wie in dieser Antwort auf eine ähnliche Frage müssen keine Einstellungen gehackt werden. Es ist viel einfacher zu schreiben:

print(foo.to_string())

1
Sie sollten es nicht in einen String konvertieren. Es ist nicht das, wonach Andy gefragt hat.
Simtim

1
@simtim Andy fragte, wie "das gesamte Array angezeigt werden soll". Dies wird das tun und ist viel einfacher als die akzeptierte Antwort.
Ninjakannon
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.