IPython Notebook cell nhiều đầu ra


82

Tôi đang chạy ô này trong IPython Notebook:

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

Kết quả là tôi chỉ nhận được đầu ra của teamsdata-frame chứ không phải của cả hai salariesteams. Nếu tôi chỉ chạy, salaries.head()tôi nhận được kết quả cho salariesdata-frame nhưng khi chạy cả hai câu lệnh, tôi chỉ thấy kết quả của teams.head(). Làm thế nào tôi có thể sửa lỗi này?


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

Câu trả lời:


126

bạn đã thử displaylệnh chưa?

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

16
Từ tài liệu: "Vì IPython 5.4 và 6.1 display()được cung cấp tự động cho người dùng mà không cần nhập".
Georgy

Tôi đang sử dụng IPython 6.4.0 và tôi phải sử dụng câu lệnh nhập from IPython.display import display
GAURAV SRIVASTAVA

99

Một cách dễ dàng hơn:

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

Nó giúp bạn không phải gõ liên tục "Display"

Giả sử ô chứa cái này:

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

a = 1
b = 2

a
b

Khi đó đầu ra sẽ là:

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

Nếu chúng ta sử dụng IPython.display.display:

from IPython.display import display

a = 1
b = 2

display(a)
display(b)

Đầu ra là:

1
2

Vì vậy, cùng một điều, nhưng không có Out[n]phần.


Cái này có mới không? Tôi không nhớ đã thấy tùy chọn này vài năm trước.
tglaria

1
Tôi thậm chí không thấy nó trong tài liệu cập nhật: ipython.readthedocs.io/en/stable/api/generated/… Nhưng nằm trên các tùy chọn IPython "Thiết bị đầu cuối": ipython.readthedocs.io/en/stable/config/options /terminal.html
tglaria

2
Ôi trời, tôi ước gì tôi có thể trả lời điều đó. Tôi nhớ đã thấy nó trên một câu hỏi khác vài tháng trước (tôi ước gì tôi có thể ghi nguồn) và nó hoạt động hoàn hảo cho tôi nên tôi đã giữ nó trong túi sau của mình.
Aru Singh

Thật tuyệt khi thêm điều này sẽ hoạt động như thế nào, nó sẽ hiển thị cho từng dòng chứ?
matanster

1
Bạn nên sử dụng get_ipython().ast_node_interactivity = 'all', không thay thế thuộc tính lớp bằng một chuỗi hằng số!
Eric

4

Cung cấp,

print salaries.head()
teams.head()

5
Đẹp nhưng đầu ra của print salaries.head()không được định dạng tốt.
Lokesh

4

IPython Notebook chỉ hiển thị giá trị trả về cuối cùng trong một ô. Giải pháp đơn giản nhất cho trường hợp của bạn là sử dụng hai ô.

Nếu bạn thực sự chỉ cần một ô, bạn có thể thực hiện một vụ hack như sau:

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

A()

Nếu bạn cần điều này thường xuyên, hãy biến nó thành một chức năng:

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

Sử dụng:

show_two_heads(salaries, teams)

Một phiên bản cho hơn hai đầu:

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

Sử dụng:

show_many_heads(salaries, teams, df1, df2)

0

Liệt kê tất cả các giải pháp:

So sánh những điều này trong một phiên tương tác:

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

Lưu ý rằng hành vi trong Jupyter hoàn toàn giống như trong ipython.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.