パンダ:設定なし。最大行数


138

以下の表示に問題がありますDataFrame

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

問題は、ipythonノートブックではデフォルトですべての行が印刷されないことですが、結果の行を表示するにはスライスする必要があります。次のオプションでも出力は変わりません。

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

誰かが配列全体を表示する方法を知っていますか?


デフォルトの(つまり、特別な構成プロファイルがない)ノートブックでコードを実行すると、すべての値をスクロールできるきれいに印刷されたテーブルが表示されます。参考までに、私のパンダ.__ version__ = 0.9.1(これが重要かどうかは不明)
BubbleGuppies

私はipythonではなく通常のシェルを意味していました
Ryan Saxe

これは0.11+のバグかもしれないと感じています...
アンディヘイデン2013年

アンディこんにちは。これはすでにウェスによって確認されていますか?このバグはどこに提出できますか?回避策はありますか?
アンディ

ここに提出しました。DataFramereprに0.11で最後の変更があったことを知っているので、バグレポートでそれらをCCしました。再回避策をお知らせします。
アンディヘイデン

回答:


233

セットdisplay.max_rows

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

古いバージョンのパンダ(0.10.1以下)では、display.heightおよびの両方を変更する必要がありdisplay.max_rowsます。

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

もご覧くださいpd.describe_option('display')

次のようにして、一時的にのみオプションを設定できます。

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

次のように、オプションをデフォルト値にリセットすることもできます。

pd.reset_option('display.max_rows')

そして、それらすべてをリセットします。

pd.reset_option('all')


6
pd.describe_option( 'display')の+1、すべてのオプションを知らなかった
nom-mon-ir

41
高さは廃止されたため、display.max_rowsオプションで十分です。
hanleyhansen 2014年

9
受け入れられた答えだけを見ている人のために:with pd.option_context('display.height', 500, 'display.max_rows', 500):これらを一時的に設定するためだけに使用してください。
BallpointBen

私はこれを達成するために修正または最善の方法を与えるべきです。なしを使用し、500に制限しないでください。他のセルでリセットする必要がないため、コードを含むセル内。
MGB.py

35

個人的には、割り当てステートメントを使用してオプションを直接設定するのが好きです。iPythonのおかげで、タブ補完で簡単に見つけることができるからです。正確なオプション名を覚えるのは難しいので、この方法でうまくいきます。

たとえば、私が覚えておく必要があるのは、それが pd.options

pd.options.<TAB>

ここに画像の説明を入力してください

ほとんどのオプションは、 display

pd.options.display.<TAB>

ここに画像の説明を入力してください

ここから、通常、現在の値は次のようになります。

pd.options.display.max_rows
60

次に、希望する値に設定します。

pd.options.display.max_rows = 100

また、オプションのコンテキストマネージャについても知っておく必要があります。これにより、コードブロック内でオプションが一時的に設定されます。オプション名を文字列として渡し、その後に希望する値を続けます。同じ行で任意の数のオプションを渡すことができます。

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

次のように、オプションをデフォルト値にリセットすることもできます。

pd.reset_option('display.max_rows')

そして、それらすべてをリセットします。

pd.reset_option('all')

を介してオプションを設定することは、それでも完全に適切pd.set_optionです。属性を直接使用する方が簡単であり、get_optionおよびの必要性が少ないことがわかりますset_option


4
with pd.option_contextこれらの回答の中で最もクリーンな方法です。最小限の副作用。
ijoseph

10

それはこのコメントこの回答ですでに指摘されていましたが、私は質問にもっと直接的な回答を与えようと思います:

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は、pandas 0.13.1(pandas 0.13.1リリースノート)以降で使用できます。よると、この

[it] withブロックを終了すると、以前の設定に戻る一連のオプションを使用してコードブロックを実行できます。


9

@hanleyhansenがコメントで述べたように、バージョン0.18.1以降、このdisplay.heightオプションは廃止され、「display.max_rows代わりに使用」と表示されます。したがって、次のように構成する必要があります。

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

リリースノートを参照してください— pandas 0.18.1ドキュメント

非推奨のdisplay.height、display.widthはフォーマットオプションのみになり、<0.11.0と同様に、サマリーのトリガーを制御しなくなりました。


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

Jupyterでは機能しません
代わりに:

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

3

以下のように、この答え同様の質問、設定をハックする必要はありません。書くのはずっと簡単です:

print(foo.to_string())

1
あなたはそれを文字列に変換するべきではありません。アンディが求めたものではありません。
simtim

1
@simtim Andyは、「配列全体を表示する」方法を尋ねました。これはそれを行い、受け入れられた答えよりもはるかに簡単です。
Ninjakannon 2017
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.