web-dev-qa-db-ja.com

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

次のDataFrameの表示に問題があります:

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

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

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

誰もアレイ全体を表示する方法を知っていますか?

86
Andy

バージョン0.11.0では、display.heightdisplay.max_rowsの両方を変更する必要があります。

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

pd.describe_option('display') も参照してください。

142

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

たとえば、覚えておく必要があるのは、pd.optionsで始まることです

pd.options.<TAB>

enter image description here

ほとんどのオプションはdisplayで利用できます

pd.options.display.<TAB>

enter image description here

ここから、通常、現在の値が次のようになることを出力します。

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_optionset_optionの必要性が少ないことに気付きました。

20
Ted Petrou

@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に似た、サマリーのトリガーを制御しないフォーマットオプションのみになりました。

10
nealmcb

this comment および this answer で既に指摘されていましたが、質問に対してより直接的な回答をしようとします。

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リリースノート )。 this によると、

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

この回答 から 類似の質問 のように、設定をハックする必要はありません。書く方がはるかに簡単です:

print(foo.to_string())
1
Ninjakannon