10

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

我展示的一些表格只要稍微格式化一下就会更容易阅读。我真的很喜欢“斑马表”之类的东西,每隔一行都有阴影。我在这里读到了如何通过 css 实现这种格式。是否有一种非常直接的方法可以将 css 应用于IPython Notebook,然后使用样式表呈现表格?

4

3 回答 3

13

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

例如,以下将条带适当分类的表:

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

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

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

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

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

于 2012-05-25T21:01:21.067 回答
7

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

于 2012-12-27T06:32:31.840 回答
2

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

https://github.com/quantopian/qgrid

另一种选择是像这样使用handsontable:

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

另一个仅使用 pandas 的第三个选项在这里:

Pandas Dataframes to_html:突出显示表格行

第四种选择是像这样使用 jinja2 之类的模板引擎:

Pandas Dataframe 在网页上显示

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

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

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

来自 Google 的 PS Python 大师提出了这个最小的解决方案(避免任何第三方依赖):

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

或阅读他的书:

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

于 2015-02-06T04:52:56.923 回答