IPythonNotebookセルの複数の出力


83

IPythonNotebookでこのセルを実行しています。

# salaries and teams are Pandas dataframe
salaries.head()
teams.head()

結果は、私が唯一の出力取得していますということであるteamsという両方のよりデータフレームをsalariesteams。実行しただけsalaries.head()salariesデータフレームの結果が得られますが、両方のステートメントを実行すると、の出力が表示されteams.head()ます。どうすればこれを修正できますか?


`from IPython.core.interactiveshell import InteractiveShell'InteractiveShell.ast_node_interactivity =" all "

回答:


130

displayコマンドを試しましたか?

from IPython.display import display
display(salaries.head())
display(teams.head())

16
ドキュメントから:「IPython5.4および6.1display()は、インポートせずにユーザーが自動的に利用できるようになるためです。」
ジョージー

IPython 6.4.0を使用しており、インポートステートメントを使用する必要がありました from IPython.display import display
GAURAV SRIVASTAVA 2018

101

より簡単な方法:

from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = "all"

「ディスプレイ」を繰り返し入力する手間が省けます

セルにこれが含まれているとします。

from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = "all"

a = 1
b = 2

a
b

その場合、出力は次のようになります。

Out[1]: 1
Out[1]: 2

使用する場合IPython.display.display

from IPython.display import display

a = 1
b = 2

display(a)
display(b)

出力は次のとおりです。

1
2

同じことですが、Out[n]パーツはありません。


これは新しいですか?数年前にこのオプションを見たのを覚えていません。
tglaria 2017

1
更新されたドキュメントにも表示されません:ipython.readthedocs.io/en/stable/api/generated/… しかし、「ターミナル」IPythonオプションにあります:ipython.readthedocs.io/en/stable/config/options /terminal.html
tglaria

2
ああ、私はそれに答えることができればいいのに。数か月前に別の質問でそれを見たのを覚えています(私が調達できればいいのですが)、それは私にとって完璧に機能したので、私はそれを後ろのポケットに入れておきました。
Aru Singh

これがどのように動作するかを追加するといいでしょう、それはすべての行ごとに表示されますか?
マタンスター2018年

1
get_ipython().ast_node_interactivity = 'all'クラスプロパティを定数文字列に置き換えるのではなく、を使用する必要があります。
エリック


4

IPython Notebookは、セルの最後の戻り値のみを表示します。あなたの場合の最も簡単な解決策は、2つのセルを使用することです。

本当に必要なセルが1つだけの場合は、次のようなハックを行うことができます。

class A:
    def _repr_html_(self):
        return salaries.head()._repr_html_() + '</br>' + teams.head()._repr_html_()

A()

これが頻繁に必要な場合は、関数にします。

def show_two_heads(df1, df2, n=5):
    class A:
        def _repr_html_(self):
            return df1.head(n)._repr_html_() + '</br>' + df2.head(n)._repr_html_()
    return A()

使用法:

show_two_heads(salaries, teams)

3つ以上のヘッドのバージョン:

def show_many_heads(*dfs, n=5):
    class A:
        def _repr_html_(self):
            return  '</br>'.join(df.head(n)._repr_html_() for df in dfs) 
    return A()

使用法:

show_many_heads(salaries, teams, df1, df2)

0

すべてのソリューションを列挙する:

インタラクティブセッションでこれらを比較する:

In [1]: import sys

In [2]: display(1)          # appears without Out
   ...: sys.displayhook(2)  # appears with Out
   ...: 3                   # missing
   ...: 4                   # appears with Out
1
Out[2]: 2
Out[2]: 4

In [3]: get_ipython().ast_node_interactivity = 'all'

In [2]: display(1)          # appears without Out
   ...: sys.displayhook(2)  # appears with Out
   ...: 3                   # appears with Out (different to above)
   ...: 4                   # appears with Out
1
Out[4]: 2
Out[4]: 3
Out[4]: 4

Jupyterでの動作は、ipythonでの動作とまったく同じであることに注意してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.