IPython Notebook Zelle mehrere Ausgänge


82

Ich führe diese Zelle in IPython Notebook aus:

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

Das Ergebnis ist, dass ich nur die Ausgabe des teamsDatenrahmens und nicht von beiden salariesund erhalte teams. Wenn ich nur starte, salaries.head()erhalte ich das Ergebnis für salariesden Datenrahmen, aber wenn ich beide Anweisungen ausführe, sehe ich nur die Ausgabe von teams.head(). Wie kann ich das korrigieren?


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

Antworten:


125

Hast du den displayBefehl ausprobiert ?

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

16
Aus den Dokumenten: "Da IPython 5.4 und 6.1 display()dem Benutzer automatisch ohne Import zur Verfügung gestellt werden."
Georgy

Ich verwende IPython 6.4.0 und musste die Importanweisung verwenden from IPython.display import display
GAURAV SRIVASTAVA

99

Ein einfacher Weg:

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

Sie müssen nicht wiederholt "Display" eingeben.

Angenommen, die Zelle enthält Folgendes:

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

a = 1
b = 2

a
b

Dann wird die Ausgabe sein:

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

Wenn wir verwenden IPython.display.display:

from IPython.display import display

a = 1
b = 2

display(a)
display(b)

Die Ausgabe ist:

1
2

Also das Gleiche, aber ohne das Out[n]Teil.


Ist das neu Ich kann mich nicht erinnern, diese Option vor ein paar Jahren gesehen zu haben.
Tglaria

1
Ich sehe es nicht einmal in der aktualisierten Dokumentation: ipython.readthedocs.io/en/stable/api/generated/… Befindet sich jedoch in den IPython-Optionen "Terminal": ipython.readthedocs.io/en/stable/config/options /terminal.html
Tglaria

2
Oh Mann, ich wünschte ich könnte das beantworten. Ich erinnere mich, dass ich es vor Monaten bei einer anderen Frage gesehen habe (ich wünschte, ich könnte es beschaffen), und es hat perfekt für mich funktioniert, also habe ich es in meiner Gesäßtasche aufbewahrt.
Aru Singh

Wäre schön hinzuzufügen, wie sich das verhält, wird es für jede einzelne Zeile angezeigt?
Matanster

1
Sie sollten get_ipython().ast_node_interactivity = 'all'die class -Eigenschaft verwenden und nicht durch eine konstante Zeichenfolge ersetzen!
Eric

4

Zur Verfügung stellen,

print salaries.head()
teams.head()

5
Schön, aber die Ausgabe von print salaries.head()ist nicht gut formatiert.
Lokesh

4

IPython Notebook zeigt nur den letzten Rückgabewert in einer Zelle an. Die einfachste Lösung für Ihren Fall besteht darin, zwei Zellen zu verwenden.

Wenn Sie wirklich nur eine Zelle benötigen, können Sie einen Hack wie diesen ausführen :

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

A()

Wenn Sie dies häufig benötigen, machen Sie es zu einer Funktion:

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

Verwendung:

show_two_heads(salaries, teams)

Eine Version für mehr als zwei Köpfe:

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

Verwendung:

show_many_heads(salaries, teams, df1, df2)

0

Alle Lösungen auflisten:

Vergleichen Sie diese in einer interaktiven Sitzung:

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

Beachten Sie, dass das Verhalten in Jupyter genau das gleiche ist wie in Ipython.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.