IPython Notebook单元多个输出


82

我在IPython Notebook中运行此单元格:

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

结果是我只得到teams数据帧的输出,而不是salaries和的输出teams。如果我只是运行,salaries.head()则会得到salaries数据帧的结果,但是在运行这两个语句时,我只会看到的输出teams.head()。我该如何纠正?


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

Answers:


126

您是否尝试过该display命令?

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

16
从文档中:“由于IPython 5.4和6.1display()无需导入即可自动提供给用户。”
乔治

我正在使用IPython 6.4.0,并且不得不使用import语句 from IPython.display import display
GAURAV SRIVASTAVA

99

一种更简单的方法:

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

它省去了您重复输入“ Display”的麻烦

说单元格包含以下内容:

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 '17

1
我什至没有在更新的文档中看到它:ipython.readthedocs.io/en/stable/api/genic/… 但是在“终端” IPython选项上:ipython.readthedocs.io/en/stable/config/options /terminal.html
tglaria

2
哦,我希望我能回答。我记得几个月前在另一个问题上看到了它(我希望可以提供),它对我来说效果很好,所以我把它放在了后兜。
阿鲁·辛格

加上它的行为会很不错,它将在每一行中显示吗?
matanster '18

1
您应该使用get_ipython().ast_node_interactivity = 'all',而不是用常量字符串替换class属性!
埃里克

4

提供,

print salaries.head()
teams.head()

5
不错,但是输出print salaries.head()格式不正确。
罗克什

4

IPython Notebook仅显示单元格中的最后一个返回值。针对您的情况,最简单的解决方案是使用两个单元。

如果你真的只需要一个电池,你可以做一个黑客就像这样:

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)

有两个以上版本的版本:

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中的行为完全相同。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.