Pandas DataFrame styler HTML display without index?

7y4bm7vi  于 2023-09-29  发布在  其他
关注(0)|答案(5)|浏览(97)

我有一个pandas dataframe,我使用df.style对象来突出显示奇数行,所以:

def highlight_oddRow(s):
    return ['background-color: yellow' if s.name % 2 else '' for v in s]

table = pd.DataFrame(
    {'a': [3,9,8,0,2], 'b': [5,95, 9, 25,5], 'c': [23,54, 2, 3,5], 'row': [1, 2, 3, 4, 5]})

with open ('out.html','w') as out:
    print >> out, table.style.apply(highlight_oddRow, axis=1).render()

但是,这总是打印出索引。有没有办法告诉它不要这样做?

h7appiyu

h7appiyu1#

由于这是我在Stack Overflow上搜索这个问题时弹出的第一个问题,我认为分享最近的发展会很好:11月17日,一个PR被提交到pandas repo,它将hide_index方法添加到styler对象。
你可以在render之前调用它:

def highlight_oddRow(s):
    return ['background-color: yellow' if s.name % 2 else '' for v in s]

table = pd.DataFrame(
    {'a': [3,9,8,0,2], 'b': [5,95, 9, 25,5], 'c': [23,54, 2, 3,5], 'row': [1, 2, 3, 4, 5]})

with open ('out.html','w') as out:
    print >> out, table.style.apply(highlight_oddRow, axis=1).hide_index().render()

请记住,文档仍然声称这些功能是临时的,可能会发生变化。更多信息在这里:https://pandas.pydata.org/pandas-docs/stable/style.html#Hiding-the-Index-or-Columns。

mwkjh3gx

mwkjh3gx2#

这可以通过使用如下的hide_index()方法来完成

print >> out, table.style.hide_index().apply(highlight_odd_row, axis=1).render()
nuypyhwy

nuypyhwy3#

我看了pandas.formats.style.Styler的源代码,找不到一个超级简单的方法。所以这里是一个黑客的方式。基本上,我告诉表的CSS不显示类为row_heading的元素和左上角的空框,它有类blank level0

import pandas as pd

def highlight_oddRow(s):
    return ['background-color: yellow' if s.name % 2 else '' for v in s]

table = pd.DataFrame(
    {'a': [3,9,8,0,2], 'b': [5,95, 9, 25,5], 'c': [23,54, 2, 3,5], 'row': [1, 2, 3, 4, 5]})

with open ('out.html','w') as out:
    # Get the styler for the table
    styler = table.style

    # Set the display to none for row headings, and the blank box in the top left corner for the column headings
    styler.set_table_styles(
        [{'selector': '.row_heading',
          'props': [('display', 'none')]},
         {'selector': '.blank.level0',
          'props': [('display', 'none')]}])

    print >> out, styler.apply(highlight_oddRow, axis=1).render()

结果:

p4tfgftt

p4tfgftt4#

也许这是一种欺骗的方式,但是你总是可以将 Dataframe 的其他列之一设置为索引?例如DataFrame.set_index('a')

ma8fv8wu

ma8fv8wu5#

documentation声明hide_index方法已经:
自版本1.4.0起弃用:此方法应替换为hide(axis="index", **kwargs)
所以这个问题的最新解决方案是:

def highlight_oddRow(s):
    return ['background-color: yellow' if s.name % 2 else '' for v in s]

table = pd.DataFrame({
    'a': [3,9,8,0,2],
    'b': [5,95, 9, 25,5],
    'c': [23,54, 2, 3,5],
    'row': [1, 2, 3, 4, 5]
})

with open("out.html", "w") as out:
    out.write(table.style
              .apply(highlight_oddRow, axis=1)
              .hide(axis="index")
              .render())

相关问题