IPython Notebook单元格多输出

时间:2015-12-21 14:32:00

标签: pandas ipython ipython-notebook

我在IPython Notebook中运行这个单元格:

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

结果是我只获得了teams数据框的输出,而不是salariesteams的输出。如果我只是运行salaries.head(),我会得到salaries数据框的结果,但在运行这两个语句时,我只看到teams.head()的输出。我怎么能纠正这个?

5 个答案:

答案 0 :(得分:88)

您是否尝试过display命令?

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

答案 1 :(得分:56)

更简单的方法:

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]部分。

答案 2 :(得分:4)

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

如果你真的只需要一个单元格就可以像这样做 hack

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)

答案 3 :(得分:4)

提供,

print salaries.head()
teams.head()

答案 4 :(得分: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中的行为完全相同。