IPython Notebook 中的“斑马表”?
Posted
技术标签:
【中文标题】IPython Notebook 中的“斑马表”?【英文标题】:"Zebra Tables" in IPython Notebook? 【发布时间】:2012-06-01 09:17:44 【问题描述】:我正在使用出色的 Notebook 进行交互式分析和 Pandas 在 IPython 中构建一些交互式工作流。
我展示的一些表格只要稍微格式化一下就会更容易阅读。我真的很喜欢“斑马表”之类的东西,其中每隔一行都有阴影。我read here 关于如何通过 css 实现这种格式。是否有一种非常直接的方法可以将 css 应用于 IPython Notebook,然后使用样式表呈现表格?
【问题讨论】:
【参考方案1】:您可以在<script>
标记内的markdown 单元格中或通过IPython 的IPython.core.display.javascript
类运行任意javascript(使用jQuery)。有了这些,您可以随心所欲地操作(或破坏)文档,包括添加样式表。
例如,以下将条带化适当分类的表:
<script type="text/javascript">
$('head').append(
"<style type='text/css'>tr.oddbackground-color: #def</style>"
);
</script>
如果您只是将其粘贴在一个降价单元格中,那么它将应用于页面上的所有内容。
或者,您可以在代码单元中从 Python 运行相同的代码(减去 <script>
标签):
from IPython.core.display import Javascript, display
display(Javascript("""
$('head').append(
"<style type='text/css'>tr.oddbackground-color: #def</style>"
);
"""))
但是这样做只会影响你的表被适当分类,这取决于编写 html 的代码(例如在 Pandas 中)。
【讨论】:
最好开始在 pandas 中做一些此类事情(假设 API 已经有些稳定) 仅供参考:this quesion 有一些漂亮的 css3 用于“斑马桌”。【参考方案2】:我刚刚发布了一个名为 ipy_table 的项目,它提供了一种简单的机制来在 IPython 笔记本中创建格式丰富的数据表(颜色、边框、对齐方式、浮点格式、斑马阴影等)。该项目位于https://github.com/epmoyer/ipy_table,您可以从https://github.com/epmoyer/ipy_table/blob/master/ipy_table-Reference.pdf 了解它的功能。
【讨论】:
您的 pdf 链接已损坏【参考方案3】:如果您对使用 slickgrid 构建网格/表格感兴趣,但在 python 中,那么您可能对 qgrid 感兴趣。这适用于使用 pandas 的 ipython 笔记本。
https://github.com/quantopian/qgrid
另一种选择是像这样使用handsontable:
http://nbviewer.ipython.org/gist/bollwyvl/6ad208084744c60dda65
这里是仅使用 pandas 的第三个选项:
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
附:来自 Google 的 Python 专家提出了这个最小的解决方案(避免任何第三方依赖):
https://***.com/a/1475453/2230844
或阅读他的书:
Python 简而言之,第 2 版, 第23章结构化文本:HTML
【讨论】:
感谢 qgrid 包的提示。 qgrid 在着色单元格方面存在未解决的问题以上是关于IPython Notebook 中的“斑马表”?的主要内容,如果未能解决你的问题,请参考以下文章
IPython Notebook 抛出 ImportError – IPython 不会
无法让 Spark 在 Windows 中的 IPython Notebook 上工作
在 jupyter/iPython notebook 脚本和类方法之间同步代码