【问题标题】:How to change the DataFrame print style in IPython notebook如何在 IPython 笔记本中更改 DataFrame 打印样式
【发布时间】:2014-03-12 16:57:33
【问题描述】:

我希望为我的笔记本添加一些样式。我已经明白要走的路是在所需的配置文件目录下添加 custom.css 文件(如here 解释的那样)。我有一个 css 文件和一个使用它的 HTML 代码示例 (credit for the designer)。您可以查看下表:

我想将这些表格样式设置为默认样式,尤其是在我使用 pandas 数据框时。问题是 - 在 css 文件中应该写什么来使这些设计成为 IPython 用来绘制表格的默认设计?

【问题讨论】:

  • 这可能对你有帮助:github.com/pydata/pandas/issues/3190
  • 我想知道它是否在 pandas 开发人员手中。我虽然 pandas 只是返回一个适当的 HTML 代码,而 IPython 负责根据其默认的 CSS 文件进行渲染。我想用我拥有的代码替换适当的 CSS 条目。例如,当我执行 df.head() 时,您能否详细说明谁负责样式以及流程是什么?
  • IPython 显示对象的__rerp_html__ 中定义的内容。这是 DataFrames:github.com/pydata/pandas/blob/master/pandas/core/frame.py#L464github.com/pydata/pandas/blob/master/pandas/core/format.py#L504 可能也有帮助,但我不知道它有多灵活。我根本没玩过。
  • 打算试一试并尽快尝试。如果您能在此处跟踪 cmets 以防我有更多问题,我将不胜感激。这是第一个:在您链接的 _repr_html_ 代码中,返回是 return ('<div style="max-height:1000px;' 'max-width:1500px;overflow:auto;">\n' + self.to_html(max_rows=max_rows, max_cols=max_cols, show_dimensions=show_dimensions) + '\n</div>') 我想知道的是“ style" 属性控制表格样式..

标签: html css pandas ipython-notebook


【解决方案1】:

如果我理解正确,任何有效的 CSS 都可以放入 custom.css 文件中。查看"Top designs" article 提供的源代码,特别是style.css 文件。

那篇文章使用ids 为每个表格实现不同的格式,但您可以直接将所需的 CSS 样式应用到适当的 HTML 标记。例如,您的图片来自他们的“Box 3”示例,该示例使用了 ID box-table-abox-table-b,相应的格式为

#box-table-a
{
    font-family: "Lucida Sans Unicode", "Lucida Grande", Sans-Serif;
    font-size: 12px;
    margin: 45px;
    width: 480px;
    text-align: left;
    border-collapse: collapse;
}
#box-table-a th
{
    font-size: 13px;
    font-weight: normal;
    padding: 8px;
    background: #b9c9fe;
    border-top: 4px solid #aabcfe;
    border-bottom: 1px solid #fff;
    color: #039;
}
#box-table-a td
{
    padding: 8px;
    background: #e8edff; 
    border-bottom: 1px solid #fff;
    color: #669;
    border-top: 1px solid transparent;
}
#box-table-a tr:hover td
{
    background: #d0dafd;
    color: #339;
}

#box-table-b
{
    font-family: "Lucida Sans Unicode", "Lucida Grande", Sans-Serif;
    font-size: 12px;
    margin: 45px;
    width: 480px;
    text-align: center;
    border-collapse: collapse;
    border-top: 7px solid #9baff1;
    border-bottom: 7px solid #9baff1;
}
#box-table-b th
{
    font-size: 13px;
    font-weight: normal;
    padding: 8px;
    background: #e8edff;
    border-right: 1px solid #9baff1;
    border-left: 1px solid #9baff1;
    color: #039;
}
#box-table-b td
{
    padding: 8px;
    background: #e8edff; 
    border-right: 1px solid #aabcfe;
    border-left: 1px solid #aabcfe;
    color: #669;
}

我的 CSS 有点生疏,但我相信您需要做的就是:

  1. 选择样式ab
  2. 删除与所选样式相关的条目
  3. 将独立的#box-table-X 替换为table
  4. 从其他样式中删除 #box-table-X 前缀
  5. custom.css 文件中的<style>..</style> 标记之间放置生成的CSS 代码

P.S. 这是基本的 CSS 行为——将样式直接应用于 HTML 标签。您还可以通过跳过第 3 步和第 4 步并在开始的表格标记中(在降价单元格中)放置一个 ID 来指定每个表格的格式:

<table id="box-table-a">
    ...

编辑:smaskingmagazine.com 不喜欢将其资源链接到异地;访问他们的文章以获取 source.zip 文件。

【讨论】:

  • 确实...猜想他们不喜欢将资源链接到异地。可以理解。您必须访问该文章。
  • 如果我错了,请纠正我,但您建议在笔记本中使用 html 代码。这很好,但我正在使用的表来自 pandas 数据框方法。我想要的是一个默认的表格渲染,不使用html代码。
  • @idoda,步骤 1-5 导致 CSS 格式应用于所有 HTML 表格,pandas 派生与否。除了“最大高度”和“最小宽度”样式之外,DataFrame.__repr_html__ 的结果中似乎没有任何格式。如果pandas 表包含一个类标签,您可以只使用 CSS 样式定位它们,但直接将格式应用于table 标签可能是您唯一的选择。
猜你喜欢
  • 2017-10-17
  • 2014-10-19
  • 2014-04-18
  • 2015-01-16
  • 2017-04-13
  • 2015-08-21
  • 2012-12-25
  • 1970-01-01
相关资源
最近更新 更多