IPython 노트북 셀 다중 출력


82

IPython Notebook에서이 셀을 실행 중입니다.

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

결과적으로 와 teams둘 다가 아닌 데이터 프레임 의 출력 만 얻습니다 . 방금 실행하면 데이터 프레임에 대한 결과를 얻지 만 두 문을 모두 실행하면 . 이 문제를 어떻게 해결할 수 있습니까?salariesteamssalaries.head()salariesteams.head()


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

답변:


126

display명령 을 시도 했습니까?

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

16
문서에서 : "IPython 5.4 및 6.1 display()은 가져 오기없이 사용자가 자동으로 사용할 수 있기 때문에 ."
Georgy

나는 IPython 6.4.0를 사용하고 난 import 문 사용했다 from IPython.display import display
GAURAV 스리 바스타을

99

더 쉬운 방법 :

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]부분이 없습니다.


이것이 새로운가요? 몇 년 전에이 옵션을 본 기억이 없습니다.
tglaria

1
업데이트 된 문서에서도 볼 수 없습니다 : ipython.readthedocs.io/en/stable/api/generated/… 하지만 "터미널"IPython 옵션에 있습니다 : ipython.readthedocs.io/en/stable/config/options /terminal.html
tglaria

2
오, 내가 대답 할 수 있으면 좋겠다. 몇 달 전에 다른 질문에서 봤던 것을 기억합니다 (출처가 필요합니다). 완벽하게 작동하여 뒷주머니에 보관했습니다.
Aru Singh

이것이 어떻게 동작 할 것인지 추가하는 것이 좋을까요? 모든 줄에 표시됩니까?
matanster

1
get_ipython().ast_node_interactivity = 'all'클래스 속성을 상수 문자열로 바꾸지 말고을 사용해야 합니다!
Eric

4

제공,

print salaries.head()
teams.head()

5
멋지지만의 출력은 print salaries.head()형식이 올바르지 않습니다.
Lokesh

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에서와 정확히 동일합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.