2012-05-25 33 views
8

Tôi đang xây dựng một số luồng công việc tương tác trong IPython bằng cách sử dụng Notebook tuyệt vời để phân tích tương tác và Pandas."Bảng Zebra" trong Sổ tay IPython?

Một số bảng tôi đang hiển thị sẽ dễ đọc hơn nhiều với một chút định dạng. Tôi thực sự muốn một cái gì đó giống như "bảng ngựa vằn", nơi mỗi hàng khác được tô bóng. Tôi read here về cách định dạng này có thể được triển khai thông qua css. Có cách nào thực sự thẳng về phía trước để áp dụng một css cho Máy tính xách tay IPython và sau đó có bảng được hiển thị bằng cách sử dụng biểu định kiểu?

Trả lời

13

Bạn có thể chạy javascript tùy ý (có jQuery) hoặc trong ô đánh dấu bên trong các thẻ <script> hoặc qua lớp IPython.core.display.Javascript của IPython. Với những điều này, bạn có thể thao tác (hoặc hủy hoại) tài liệu cho nội dung trái tim của bạn, bao gồm thêm các bảng định kiểu.

bảng Ví dụ, sau đây sẽ sọc xếp một cách thích hợp:

<script type="text/javascript"> 
    $('head').append(
     "<style type='text/css'>tr.odd{background-color: #def}</style>" 
    ); 
</script> 

Nếu bạn chỉ dính mà trong một tế bào markdown của bạn, sau đó nó sẽ áp dụng cho tất cả mọi thứ trên trang.

Hoặc, bạn có thể chạy cùng mã (trừ <script> thẻ) từ Python trong một tế bào mã:

from IPython.core.display import Javascript, display 
display(Javascript(""" 
    $('head').append(
     "<style type='text/css'>tr.odd{background-color: #def}</style>" 
    ); 
""")) 

Nhưng làm điều này sẽ chỉ ảnh hưởng đến bảng của bạn được phân loại một cách thích hợp, trong đó có đến mã đó là viết HTML (ví dụ như trong Pandas).

+2

Sẽ tốt nếu bạn bắt đầu thực hiện một số loại công cụ này trong gấu trúc (giả sử API có phần ổn định) –

+0

fyi: [quesion này] (http://stackoverflow.com/questions/4977008/how-to- use-table-trodd-td-in-html) có một số css3 tiện lợi cho 'bảng ngựa vằn'. – drevicko

7

Tôi vừa phát hành một dự án có tên ipy_table để cung cấp một cơ chế dễ dàng để tạo bảng dữ liệu có định dạng phong phú trong sổ tay IPython (màu sắc, đường viền, căn chỉnh, định dạng nổi, đổ bóng ngựa v.v.). Dự án là https://github.com/epmoyer/ipy_table và bạn có thể có ý tưởng tốt về khả năng của nó từ https://github.com/epmoyer/ipy_table/blob/master/ipy_table-Reference.pdf.

+0

liên kết pdf của bạn bị hỏng – denfromufa

2

nếu bạn quan tâm đến việc xây dựng lưới/bảng bằng cách sử dụng slickgrid, nhưng trong python, thì bạn có thể quan tâm đến qgrid. Điều này làm việc từ máy tính xách tay ipython sử dụng gấu trúc.

https://github.com/quantopian/qgrid

Một lựa chọn khác là sử dụng handsontable như thế này:

http://nbviewer.ipython.org/gist/bollwyvl/6ad208084744c60dda65

Tuy nhiên, một, 3 lựa chọn duy nhất sử dụng gấu trúc là ở đây:

Pandas Dataframes to_html: Highlighting table rows

tùy chọn thứ tư là sử dụng công cụ mẫu như jinja2 như sau:

Pandas Dataframe display on a webpage

http://nbviewer.ipython.org/github/pydata/pandas/blob/8c4f9571c08d5122f1d9e40c43dadab8b6f10bf5/pandas_HTML_styling.ipynb

Cuối cùng có một vấn đề mở trong gấu trúc để render dựa trên các mẫu:

https://github.com/pydata/pandas/issues/3190

T.B.Python guru từ Google gợi ý giải pháp này tối thiểu (tránh bất kỳ sự phụ thuộc của bên thứ ba):

https://stackoverflow.com/a/1475453/2230844

hoặc đọc cuốn sách của ông:

Python in a Nutshell, 2nd Edition, Chương 23 Structured Text: HTML

+0

Cảm ơn gợi ý về gói qgrid. – rbrito

+0

qgrid có sự cố mở với các ô màu – denfromufa

+1

https://github.com/quantopian/qgrid/issues/28 – denfromufa

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