2013-05-07 40 views
52

Tôi có một vấn đề xem sau DataFrame:Pandas: Không. hàng tối đa

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 mỗi mặc định trong ipython máy tính xách tay, nhưng tôi phải cắt để xem các hàng kết quả. Ngay cả tùy chọn sau không thay đổi kết quả đầu ra:

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

Có ai biết cách hiển thị toàn bộ mảng không?

+0

là bạn hỏi làm thế nào để làm cho nó để bạn có thể vieew tất cả các hàng hoặc lý do tại sao ipython máy tính xách tay làm cho nó để bạn không –

+0

những gì nếu bạn chỉ cần chạy này trong vỏ? nó có hoạt động không? –

+0

Cùng một vấn đề trong vỏ ipython. Bạn có thể tạo lại vấn đề? – Andy

Trả lời

91

Đối với phiên bản 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').

+4

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

+15

Chiều cao hiện không được chấp nhận vì vậy tùy chọn display.max_rows là đủ. – hanleyhansen

1

Như trong this answer đến similar question, không cần cài đặt hack. Nó là đơ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

+0

@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 câu trả lời được chấp nhận. – Ninjakannon

6

Như @hanleyhansen ghi nhận trong một chú thích, như các phiên bản 0.18.1, tùy chọn display.height bị phản đối, và nói rằng "sử dụng display.max_rows thay thế". Vì vậy, bạn chỉ cần phải cấu hình nó như thế này:

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

Xem Release Notes — pandas 0.18.1 documentation: display.height

Không dùng nữa, display.width tại là duy nhất một lựa chọn định dạng không kiểm soát việc kích hoạt bằng Tóm lại, tương tự như < 0.11.0.

3

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

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

pd.options.<TAB> 

enter image description here

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

pd.options.display.<TAB> 

enter image description here

Từ đây, tôi thường ra những gì giá trị hiện tại là như thế này:

pd.options.display.max_rows 
60 

sau đó tôi đặt nó là những gì tôi muốn nó được:

pd.options.display.max_rows = 100 

Ngoài ra, bạn cần phải nhận thức bối cảnh người quản lý 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 tên tùy chọn dưới dạng 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ể thiết lập lại một lựa chọn trở về giá trị mặc định của nó như thế này:

pd.reset_option('display.max_rows') 

Và đặt lại tất cả trong số họ trở lại:

pd.reset_option('all') 

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

+0

'với pd.option_context' là phương pháp sạch nhất trong số các câu trả lời này; ít tác dụng phụ nhất. – ijoseph

Các vấn đề liên quan