我正在使用出色的 Notebook 进行交互式分析和 Pandas 在 IPython 中构建一些交互式工作流。
我展示的一些表格只要稍微格式化一下就会更容易阅读。我真的很喜欢“斑马表”之类的东西,每隔一行都有阴影。我在这里读到了如何通过 css 实现这种格式。是否有一种非常直接的方法可以将 css 应用于IPython Notebook,然后使用样式表呈现表格?
<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 中)。
我刚刚发布了一个名为 ipy_table 的项目,它提供了一种简单的机制来在 IPython 笔记本中创建格式丰富的数据表(颜色、边框、对齐方式、浮点格式、斑马阴影等)。该项目位于https://github.com/epmoyer/ipy_table,您可以从https://github.com/epmoyer/ipy_table/blob/master/ipy_table-Reference.pdf了解它的功能。
如果您对使用 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 中存在一个基于模板渲染的未解决问题:
https://github.com/pydata/pandas/issues/3190
来自 Google 的 PS Python 大师提出了这个最小的解决方案(避免任何第三方依赖):
https://stackoverflow.com/a/1475453/2230844
或阅读他的书:
Python in a Nutshell,第 2 版,第 23 章结构化文本:HTML