根据 Python Pandas 中列中的值突出显示 DataFrame 中的行
Highlight rows from a DataFrame based on values in a column in Python Pandas
我一直在尝试根据多种条件突出显示 pandas 数据框中的某些行。
我希望当目标列中的字符串与函数中定义的条件匹配时,整行将突出显示。
我尝试了 .style.apply 方法的不同组合,但它一直给我以下错误:
ValueError: style is not supported for non-unique indicies.
这是代码:
def highlight_rows(s):
if s['my_column'] == 'some_text':
return 'background-color: green'
elif s['my_column'] == 'somedifferent_text':
return 'background-color: blue'
df.style.apply(highlight_rows, axis = 0)
我正在使用 Python 3.6.5 和 Pandas 0.22.0
知道我做错了什么吗?
我应该传递不同的参数还是进行不同的循环?
谢谢
假设 s 等于您的数据框:
试试这个:
def file():
styled = df.style.apply(highlight_rows, axis = 0)
f = open('new_file.html', 'w')
html = (styled.render())
f.write(html)
f.close()
def highlight_rows(s):
if s.my_column == 'some_text':
return ['background-color: green'] * s.size
elif s.my_column == 'somedifferent_text':
return ['background-color: blue'] * s.size
apply
方法根据 axis=0
或 axis=1
提取每一列或每一行。然后您可以为行或列中的每个单元格添加任何样式。如果你想通过方法传递你的样式,你需要为数组的每个元素分配方法表达式。否则,它必须是 None
值。
def highlight_rows(s):
con = s.copy()
con[:] = None
if (s['my_column'] == 'some_text'):
con[:] = "background-color: green"
elif (s['my_column'] == 'somedifferent_text'):
con[:] = "background-color: blue"
return con
df.style.apply(highlight_rows, axis=1)
我一直在尝试根据多种条件突出显示 pandas 数据框中的某些行。
我希望当目标列中的字符串与函数中定义的条件匹配时,整行将突出显示。
我尝试了 .style.apply 方法的不同组合,但它一直给我以下错误:
ValueError: style is not supported for non-unique indicies.
这是代码:
def highlight_rows(s):
if s['my_column'] == 'some_text':
return 'background-color: green'
elif s['my_column'] == 'somedifferent_text':
return 'background-color: blue'
df.style.apply(highlight_rows, axis = 0)
我正在使用 Python 3.6.5 和 Pandas 0.22.0
知道我做错了什么吗?
我应该传递不同的参数还是进行不同的循环?
谢谢
假设 s 等于您的数据框: 试试这个:
def file():
styled = df.style.apply(highlight_rows, axis = 0)
f = open('new_file.html', 'w')
html = (styled.render())
f.write(html)
f.close()
def highlight_rows(s):
if s.my_column == 'some_text':
return ['background-color: green'] * s.size
elif s.my_column == 'somedifferent_text':
return ['background-color: blue'] * s.size
apply
方法根据 axis=0
或 axis=1
提取每一列或每一行。然后您可以为行或列中的每个单元格添加任何样式。如果你想通过方法传递你的样式,你需要为数组的每个元素分配方法表达式。否则,它必须是 None
值。
def highlight_rows(s):
con = s.copy()
con[:] = None
if (s['my_column'] == 'some_text'):
con[:] = "background-color: green"
elif (s['my_column'] == 'somedifferent_text'):
con[:] = "background-color: blue"
return con
df.style.apply(highlight_rows, axis=1)