IPython Notebook cell multiple outputs

I am running this cell in IPython Notebook:

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

The result is that I am only getting the output of teams data-frame rather than of both salaries and teams. If I just run salaries.head() I get the result for salaries data-frame but on running both the statement I just see the output of teams.head(). How can I correct this?


have you tried the display command?

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

An easier way:

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

It saves you having to repeatedly type "Display"

Say the cell contains this:

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

a = 1
b = 2

a
b

Then the output will be:

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

If we use IPython.display.display:

from IPython.display import display

a = 1
b = 2

display(a)
display(b)

The output is:

1
2

So the same thing, but without the Out[n] part.


IPython Notebook shows only the last return value in a cell. The easiest solution for your case is to use two cells.

If you really need only one cell you could do a hack like this:

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

A()

If you need this often, make it a function:

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()

Usage:

show_two_heads(salaries, teams)

A version for more than two heads:

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()

Usage:

show_many_heads(salaries, teams, df1, df2)

Provide,

print salaries.head()
teams.head()