在我的代码中,我使用df.style.applymap()将HTML呈现到我的Intranet网页上。 我有下面的代码对我来说很好用(2列传递给我的函数highlight_vals)。
Map.update
现在,我想做一个类似的函数(或者曾经使用当前的highlight_vals),以便在以下行的条件下实现比较突出显示:
如果ValinColumn1> 0.25 * ValinColumn2:#(用于同一行/记录)
返回'background-color:%s'%颜色#Yellow / Highlights。
我在 views.py 中使用上述功能:
httresp + = df.style.applymap(highlight_vals,subset = [col1,col2])
答案 0 :(得分:1)
您需要使用apply(axis=1)
遍历行:
def highlight_vals(row, cols=['A', 'B'], color='green'):
a, b = cols
styles = {col: '' for col in row.index}
if row[a] > 0.25 * row[b]:
styles[a] = 'background-color: %s' % color
styles[b] = 'background-color: %s' % color
return styles
df.style.apply(lambda x: highlight_vals(x, cols=['B', 'E']), axis=1)
答案 1 :(得分:0)
从这个问题: Difference between map, applymap and apply methods in Pandas 我认为您需要的是功能适用。它可以在多个列上工作。 您正在使用面向整个数据框的applymap(但是您可以通过使用df.style从数据框中选择一列来解决此问题)
这是一个玩具示例:
>>> df = pd.DataFrame([[1,2],[3,4]], columns=['A', 'B'])
>>> df['sum_A_B']=df.apply(lambda x: x['A'] + x['B'], axis=1)
>>> df
A B sum_A_B
0 1 2 3
1 3 4 7