Pandy: Ustawienie nr. max rzędów


138

Mam problem z wyświetleniem następujących informacji DataFrame:

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

Problem polega na tym, że nie drukuje domyślnie wszystkich wierszy w notatniku ipython, ale muszę ciąć, aby wyświetlić wynikowe wiersze. Nawet następująca opcja nie zmienia wyjścia:

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

Czy ktoś wie, jak wyświetlić całą tablicę?


Kiedy uruchamiam twój kod w domyślnym (tj. Bez specjalnego profilu konfiguracyjnego) notatnika, otrzymuję ładnie wydrukowaną tabelę, którą można przewijać ze wszystkimi wartościami. Do Twojej wiadomości, moje pandy .__ version__ = 0.9.1 (nie wiem, czy to ma znaczenie)
BubbleGuppies

Miałem na myśli zwykły pocisk, a nie ipython
Ryan Saxe

Mam przeczucie, że to może być błąd w 0.11 + ...
Andy Hayden

Cześć Andy. Czy zostało to już potwierdzone przez Wesa? Gdzie mogę zgłosić ten błąd? Czy jest w pobliżu praca?
Andy

Właśnie złożyłem to tutaj , wiem, że w wersji 0.11 pojawiły się pewne zmiany w ostatniej chwili w replice DataFrame, więc dodałem je do raportu o błędzie. Poinformuje Cię o ponownym obejściu.
Andy Hayden

Odpowiedzi:


233

Zestaw display.max_rows:

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

W przypadku starszych wersji pand (<= 0.11.0) musisz zmienić oba display.heighti display.max_rows.

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

Zobacz także pd.describe_option('display').

Możesz ustawić opcję tylko tymczasowo na ten jeden raz, na przykład:

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

Możesz także zresetować opcję z powrotem do jej wartości domyślnej, na przykład:

pd.reset_option('display.max_rows')

I zresetuj je wszystkie z powrotem:

pd.reset_option('all')


6
+1 dla pd.describe_option ('display'), nie znałem wszystkich opcji
nom-mon-ir

41
Wysokość jest teraz przestarzała, więc opcja display.max_rows jest wystarczająca.
hanleyhansen

9
Dla każdego, kto patrzy tylko na zaakceptowaną odpowiedź: użyj, with pd.option_context('display.height', 500, 'display.max_rows', 500):aby ustawić je tylko tymczasowo.
BallpointBen

Powinienem poprawić lub podać najlepszy sposób, aby to osiągnąć. Użyj Brak i nie ograniczaj do 500. #Temporary wyświetl wszystkie wiersze i kolumny z pd.option_context ('display.max_rows', None, 'display.max_columns', None): display (df_facilities) Powyższy kod zadziała tylko w komórce zawierającej kod, więc nie ma potrzeby resetowania w innych komórkach.
MGB.py

35

Osobiście lubię ustawiać opcje bezpośrednio za pomocą instrukcji przypisania, ponieważ można je łatwo znaleźć za pomocą uzupełniania kart dzięki iPython. Trudno mi zapamiętać, jakie są dokładne nazwy opcji, więc ta metoda działa dla mnie.

Na przykład wszystko, co muszę pamiętać, to to, że zaczyna się od pd.options

pd.options.<TAB>

wprowadź opis obrazu tutaj

Większość opcji jest dostępna w ramach display

pd.options.display.<TAB>

wprowadź opis obrazu tutaj

Stąd zwykle wyprowadzam, jaka jest bieżąca wartość:

pd.options.display.max_rows
60

Następnie ustawiłem to na to, co chcę:

pd.options.display.max_rows = 100

Należy również pamiętać o menedżerze kontekstu dla opcji, który tymczasowo ustawia opcje wewnątrz bloku kodu. Podaj nazwę opcji jako ciąg, a po nim wartość, która ma być. Możesz podać dowolną liczbę opcji w tej samej linii:

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

Możesz także zresetować opcję z powrotem do jej wartości domyślnej, na przykład:

pd.reset_option('display.max_rows')

I zresetuj je wszystkie z powrotem:

pd.reset_option('all')

Nadal dobrze jest ustawiać opcje za pomocą pd.set_option. Po prostu uważam, że bezpośrednie używanie atrybutów jest łatwiejsze i mniej jest potrzebne get_optioni set_option.


4
with pd.option_contextjest najczystszą metodą spośród tych odpowiedzi; najmniej skutków ubocznych.
ijoseph

10

Zostało to już wskazane w tym komentarzu iw tej odpowiedzi , ale spróbuję udzielić bardziej bezpośredniej odpowiedzi na pytanie:

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 jest dostępny od pandy 0.13.1 ( informacje o wydaniu pandy 0.13.1 ). Zgodnie z tym ,

[it] pozwala [s] na wykonanie bloku kodu z zestawem opcji, które powracają do poprzednich ustawień po wyjściu z bloku with.


9

Jak @hanleyhansen zauważył w komentarzu, od wersji 0.18.1 display.heightopcja jest przestarzała i mówi „użyj display.max_rowszamiast tego”. Musisz więc tylko skonfigurować to w ten sposób:

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

Zobacz informacje o wydaniu - dokumentacja pandy 0.18.1 :

Przestarzałe display.height, display.width są teraz tylko opcją formatowania, która nie kontroluje wyzwalania podsumowania, podobnie jak <0.11.0.


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

Nie działa w Jupyter!
Zamiast tego użyj:

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

3

Podobnie jak w tej odpowiedzi na podobne pytanie , nie ma potrzeby hakowania ustawień. O wiele łatwiej jest napisać:

print(foo.to_string())

1
Nie powinieneś konwertować go na łańcuch. Nie o to prosił Andy.
simtim

1
@simtim Andy zapytał, jak „wyświetlić całą tablicę”. To zrobi to i jest znacznie prostsze niż zaakceptowana odpowiedź.
Ninjakannon
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.