IPython Dizüstü bilgisayar hücresi birden çok çıktı


83

Bu hücreyi IPython Not Defterinde çalıştırıyorum:

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

Sonuç, teamshem salariesve yerine yalnızca veri çerçevesinin çıktısını alıyorum teams. Sadece çalıştırırsam salaries.head(), salariesveri çerçevesi sonucunu alırım, ancak her iki ifadeyi çalıştırdığımda sadece çıktısını görüyorum teams.head(). Bunu nasıl düzeltebilirim?


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

Yanıtlar:


130

displaykomutu denedin mi?

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

16
Dokümanlardan: "IPython 5.4 ve 6.1 display()içe aktarılmadan otomatik olarak kullanıcıya sunulduğundan beri ."
Georgy

IPython 6.4.0 kullanıyorum ve import deyimini kullanmak zorunda kaldım from IPython.display import display
GAURAV SRIVASTAVA

101

Daha kolay bir yol:

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

Tekrar tekrar "Ekran" yazmak zorunda kalmadan sizi kurtarır

Hücrenin şunu içerdiğini varsayalım:

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

a = 1
b = 2

a
b

Ardından çıktı:

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

Kullanırsak IPython.display.display:

from IPython.display import display

a = 1
b = 2

display(a)
display(b)

Çıktı:

1
2

Yani aynı şey, ama Out[n]parça olmadan .


Bu yeni mi Birkaç yıl önce bu seçeneği gördüğümü hatırlamıyorum.
tglaria

1
Güncellenen belgelerde bile görmüyorum: ipython.readthedocs.io/en/stable/api/generated/… Ancak "Terminal" IPython seçeneklerinde: ipython.readthedocs.io/en/stable/config/options /terminal.html
tglaria

2
Oh adamım, keşke buna cevap verebilseydim. Aylar önce farklı bir soruda gördüğümü hatırlıyorum (keşke kaynak yapabilseydim) ve benim için mükemmel çalıştı, bu yüzden arka cebimde sakladım.
Aru Singh

Bunun nasıl davranacağını eklemek güzel olurdu, her satırda görüntülenecek mi?
matanster

1
Sen kullanarak olmalıdır get_ipython().ast_node_interactivity = 'all'bir sabit dize ile sınıf özelliğini değiştirerek değil,!
Eric

4

Sağlamak,

print salaries.head()
teams.head()

5
Güzel ama çıktısı print salaries.head()iyi biçimlendirilmemiş.
Lokesh

4

IPython Notebook, bir hücredeki yalnızca son dönüş değerini gösterir. Davanız için en kolay çözüm iki hücre kullanmaktır.

Gerçekten yalnızca bir hücreye ihtiyacınız varsa, şöyle bir hack yapabilirsiniz :

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

A()

Buna sık sık ihtiyacınız varsa, onu bir işlev yapın:

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

Kullanım:

show_two_heads(salaries, teams)

İkiden fazla kafa için bir versiyon:

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

Kullanım:

show_many_heads(salaries, teams, df1, df2)

0

Tüm çözümleri sıralıyoruz:

Bunları etkileşimli bir oturumda karşılaştırmak:

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'deki davranışın ipython'daki ile tamamen aynı olduğuna dikkat edin.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.