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

2023-11-21

如果我使用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')

enter image description here

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

如果我不使用DataFrame.set_index,额外的行消失了,但我得到了数字行索引,这是我不想要的:

enter image description here

如果我使用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))

enter image description here

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

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


我在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

enter image description here

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 HTML 中显示 Pandas DataFrame,无需额外行 的相关文章

随机推荐