Gấu trúc: Thiết lập không. của hàng tối đa


138

Tôi có một vấn đề khi xem như sau DataFrame:

n = 100
foo = DataFrame(index=range(n))
foo['floats'] = np.random.randn(n)
foo

Vấn đề là nó không in tất cả các hàng theo mặc định trong sổ ghi chép ipython, nhưng tôi phải cắt để xem các hàng kết quả. Ngay cả tùy chọn sau cũng không thay đổi đầu ra:

pd.set_option('display.max_rows', 500)

Có ai biết làm thế nào để hiển thị toàn bộ mảng?


Khi tôi chạy mã của bạn trong sổ ghi chép mặc định (nghĩa là không có cấu hình cấu hình đặc biệt), tôi nhận được một bảng in đẹp có thể cuộn với tất cả các giá trị. FYI, gấu trúc của tôi .__ phiên bản__ = 0.9.1 (không chắc vấn đề này có quan trọng không)
BubbleGuppies

Ý tôi là vỏ thường, không phải ipython
Ryan Saxe

Tôi có cảm giác đây có thể là một lỗi trong 0.11 + ...
Andy Hayden

Xin chao Andy. Điều này đã được xác nhận bởi Wes? Tôi có thể gửi lỗi này ở đâu? Có một cách giải quyết?
Andy

Tôi mới nộp nó ở đây , tôi biết có một số thay đổi vào phút cuối trong 0.11 đối với repr DataFrame vì vậy tôi đã gửi những báo cáo lỗi này. Sẽ cho bạn biết tái giải quyết.
Andy Hayden

Câu trả lời:


233

Đặt display.max_rows:

pd.set_option('display.max_rows', 500)

Đối với các phiên bản cũ hơn của gấu trúc (<= 0.11.0), bạn cần thay đổi cả hai display.heightdisplay.max_rows.

pd.set_option('display.height', 500)
pd.set_option('display.max_rows', 500)

Xem thêm pd.describe_option('display').

Bạn chỉ có thể đặt tùy chọn tạm thời cho lần này như sau:

from IPython.display import display
with pd.option_context('display.max_rows', 100, 'display.max_columns', 10):
    display(df) #need display to show the dataframe when using with in jupyter
    #some pandas stuff

Bạn cũng có thể đặt lại một tùy chọn trở về giá trị mặc định như thế này:

pd.reset_option('display.max_rows')

Và đặt lại tất cả chúng trở lại:

pd.reset_option('all')


6
+1 cho pd.describe_option ('display'), tôi không biết tất cả các tùy chọn
nom-mon-ir

41
Chiều cao hiện không được dùng nữa nên tùy chọn display.max_rows là đủ.
hanleyhansen

9
Đối với bất cứ ai chỉ nhìn vào câu trả lời được chấp nhận: sử dụng with pd.option_context('display.height', 500, 'display.max_rows', 500):để chỉ đặt những cái này tạm thời.
BallpointBen

Tôi nên sửa hoặc đưa ra cách tốt nhất để đạt được điều này. Sử dụng Không và không giới hạn ở 500. #T hiển thị tạm thời tất cả các hàng và cột với pd.option_context ('display.max_rows', Không, 'display.max_columns', Không): display (df_facilities) Mã trên sẽ chỉ có hiệu lực trong ô chứa mã nên không cần thiết lập lại trong các ô khác.
MGB.py

35

Cá nhân, tôi thích thiết lập các tùy chọn trực tiếp bằng câu lệnh gán vì nó dễ dàng tìm thấy thông qua hoàn thành tab nhờ iPython. Tôi thấy thật khó để nhớ tên tùy chọn chính xác là gì, vì vậy phương pháp này hiệu quả với tôi.

Ví dụ, tất cả những gì tôi phải nhớ là nó bắt đầu bằng pd.options

pd.options.<TAB>

nhập mô tả hình ảnh ở đây

Hầu hết các tùy chọn có sẵn dưới display

pd.options.display.<TAB>

nhập mô tả hình ảnh ở đây

Từ đây, tôi thường xuất ra giá trị hiện tại như thế nào:

pd.options.display.max_rows
60

Sau đó, tôi đặt nó thành những gì tôi muốn nó là:

pd.options.display.max_rows = 100

Ngoài ra, bạn nên biết về trình quản lý bối cảnh cho các tùy chọn, tạm thời đặt các tùy chọn bên trong một khối mã. Chuyển vào tên tùy chọn dưới dạng một chuỗi theo sau là giá trị bạn muốn. Bạn có thể vượt qua trong bất kỳ số lượng tùy chọn trong cùng một dòng:

with pd.option_context('display.max_rows', 100, 'display.max_columns', 10):
    some pandas stuff

Bạn cũng có thể đặt lại một tùy chọn trở về giá trị mặc định như thế này:

pd.reset_option('display.max_rows')

Và đặt lại tất cả chúng trở lại:

pd.reset_option('all')

Nó vẫn hoàn toàn tốt để thiết lập các tùy chọn thông qua pd.set_option. Tôi chỉ thấy việc sử dụng các thuộc tính trực tiếp là dễ dàng hơn và ít có nhu cầu get_optionset_option.


4
with pd.option_contextlà phương pháp sạch nhất trong số những câu trả lời này; tác dụng phụ ít nhất.
ijoseph

10

Nó đã được chỉ ra trong bình luận này và trong câu trả lời này , nhưng tôi sẽ cố gắng đưa ra câu trả lời trực tiếp hơn cho câu hỏi:

from IPython.display import display
import numpy as np
import pandas as pd

n = 100
foo = pd.DataFrame(index=range(n))
foo['floats'] = np.random.randn(n)

with pd.option_context("display.max_rows", foo.shape[0]):
    display(foo)

pandas.option_context có sẵn kể từ pandas 0.13.1 ( ghi chú phát hành pandas 0.13.1 ). Theo đó ,

[nó] cho phép [s] bạn thực thi một bộ mã với một tập hợp các tùy chọn hoàn nguyên về các cài đặt trước đó khi bạn thoát khỏi khối có.


9

Như @hanleyhansen đã lưu ý trong một nhận xét, kể từ phiên bản 0.18.1, display.heighttùy chọn này không được chấp nhận và nói "sử dụng display.max_rowsthay thế". Vì vậy, bạn chỉ cần cấu hình nó như thế này:

pd.set_option('display.max_rows', 500)

Xem Ghi chú phát hành - tài liệu gấu trúc 0.18.1 :

Không dùng nữa display.height, display. Thong hiện chỉ là một tùy chọn định dạng không kiểm soát việc kích hoạt tóm tắt, tương tự như <0.11.0.


7
pd.set_option('display.max_rows', 500)
df

Không hoạt động trong Jupyter!
Thay vào đó sử dụng:

pd.set_option('display.max_rows', 500)
df.head(500)

3

Như trong câu trả lời này cho một câu hỏi tương tự , không cần phải hack cài đặt. Nó đơn giản hơn nhiều để viết:

print(foo.to_string())

1
Bạn không nên chuyển đổi nó thành chuỗi. Đó không phải là những gì Andy yêu cầu.
simtim

1
@simtim Andy hỏi làm thế nào để "hiển thị toàn bộ mảng". Điều này sẽ làm điều đó và nhiều đơn giản hơn là câu trả lời được chấp nhận.
Ninjakannon
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.