我有一个pandas数据帧,我正在使用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()
但是,这总是打印出索引。有没有办法告诉它不要这样做?
答案 0 :(得分:7)
由于这是我在Stack Overflow上搜索此问题时弹出的第一个问题,我认为分享最近的开发会很好:在11月17日,PR致力于pandas repo将hide_index
方法添加到styler
个对象。
你可以在渲染之前调用它:
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。
答案 1 :(得分:4)
我查看了pandas.formats.style.Styler
的源代码,但找不到一种超级简单的方法。所以相反,这是一种hacky方式。基本上我告诉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()
结果:
答案 2 :(得分:0)
这可以通过使用df.styler.hide_index()来完成。
print >> out, table.style.hide_index().apply(highlight_oddRow, axis=1).render()