【发布时间】:2018-09-15 13:21:19
【问题描述】:
我一直在尝试根据多个条件突出显示 pandas 数据框中的某些行。
我期望当目标列中的字符串与函数中定义的条件匹配时,整行将被突出显示。
我尝试了 .style.apply 方法的不同组合,但它一直给我以下错误:
ValueError:非唯一索引不支持样式。
这是代码:
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
知道我做错了什么吗?
我应该传递不同的参数还是执行不同的循环?
谢谢
【问题讨论】:
-
错误看起来很清楚...您的数据框具有非唯一索引(即索引具有重复值),并且这种情况不支持
.style。你可以试试df.reset_index().style.apply(highlight_rows, axis = 0)。 -
谢谢@jdehesa,它消除了错误。我以为是别的东西,因为我首先尝试使用命令
df.set_index(['my_column'], append = True)。它现在没有给我任何错误,但是在使用 ExcelWriter 方法导出数据框后,我没有看到任何突出显示的行。 -
好吧
reset_index()给你一个新的数据框,你可以做df2 = df.reset_index(); df2.style.apply(highlight_rows, axis = 0)然后导出df2... -
信息:同名的两列生成相同的错误消息。
标签: python python-3.x pandas dataframe highlight