IPython Notebook中的“Zebra Tables”?

时间:2012-05-25 19:33:40

标签: python pandas ipython ipython-notebook jupyter

我正在使用梦幻般的Notebook进行交互式分析和Pandas在IPython中构建一些交互式工作流程。

我正在显示的一些表格通过一些格式化更容易阅读。我真的很喜欢像“斑马桌”这样的东西,其中每一行都有阴影。我read here关于如何通过css实现这种格式化。是否有一种非常简单的方法将css应用于 IPython Notebook ,然后使用样式表呈现表格?

3 个答案:

答案 0 :(得分:13)

您可以在<script>标记内的标记单元格中运行任意javascript(使用jQuery),也可以通过IPython的IPython.core.display.Javascript类运行。有了这些,您可以根据自己心中的内容操作(或破坏)文档,包括添加样式表。

例如,以下内容将对适当的分类表进行分类:

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

如果您只是将其粘贴在其中一个降价单元格中,那么它将适用于页面上的所有内容。

或者,您可以在代码单元格中从Python运行相同的代码(减去<script>标记):

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

但这样做只会影响适当分类的表格,这取决于编写HTML的代码(例如在Pandas中)。

答案 1 :(得分:7)

我刚刚发布了一个名为ipy_table的项目,它提供了一种在IPython笔记本中创建格式丰富的数据表的简单机制(颜色,边框,对齐,浮动格式,斑马着色等)。该项目位于https://github.com/epmoyer/ipy_table,您可以从https://github.com/epmoyer/ipy_table/blob/master/ipy_table-Reference.pdf了解它的功能。

答案 2 :(得分:2)

如果您对使用slickgrid构建网格/表感兴趣,但在python中,那么您可能对qgrid感兴趣。这适用于使用pandas的ipython笔记本。

https://github.com/quantopian/qgrid

另一种选择是使用这样的双手:

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

另一个仅使用熊猫的第三个选项是:

Pandas Dataframes to_html: Highlighting table rows

第四个选项是使用模板引擎,如jinja2,如下所示:

Pandas Dataframe display on a webpage

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

最后,在pandas中存在一个基于模板呈现的未解决问题:

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

P.S。谷歌的Python大师建议这个最小的解决方案(避免任何第三方依赖):

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

或阅读他的书:

Python in a Nutshell,2nd Edition, 第23章结构化文本:HTML