在 HTML 中显示 Pandas DataFrame,无需额外行

Jas*_*n S 7 html python pandas

如果我使用DataFrame.set_index,我会得到这个结果:

import pandas as pd

df = pd.DataFrame([['foo',1,3.0],['bar',2,2.9],
                   ['baz',4,2.85],['quux',3,2.82]],
                 columns=['name','order','gpa'])
df.set_index('name')
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

请注意不必要的行...我知道它这样做是因为它保留了列标题的左上角单元格,但我不关心它,如果我在演示文稿中使用它,它会使我的表格看起来有些不专业。

如果我不使用DataFrame.set_index,多余的行就会消失,但我会得到数字行索引,这是我不想要的:

在此输入图像描述

如果我使用to_html(index=False)那么我可以解决这些问题,但第一列不是粗体:

import pandas as pd
from IPython.display import HTML

df = pd.DataFrame([['foo',1,3.0],['bar',2,2.9],
                   ['baz',4,2.85],['quux',3,2.82]],
                 columns=['name','order','gpa'])
HTML(df.to_html(index=False))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

如果我想控制样式以使名称变为粗体,我想我可以使用新的StylerAPI via HTML(df.style.do_something_here().render()),但我不知道如何实现该index=False功能。

黑客要做什么?(除了我自己构建 HTML 之外)

Jas*_*n S 5

我查阅了Styler 的源代码并找到了答案;如果您设置,df.index.names = [None]那么这会抑制“额外”行(以及我并不真正关心的列标题):

import pandas as pd

df = pd.DataFrame([['foo',1,3.0],['bar',2,2.9],
                   ['baz',4,2.85],['quux',3,2.82]],
                 columns=['name','order','gpa'])
df = df.set_index('name')
df.index.names = [None]
df
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述