pandas - 将实际值与使用styler的目标进行比较

时间:2016-10-20 17:45:46

标签: pandas

我有一些数据包含实际值的列,然后是原始目标值

   dimension | metric_actual | metric_target | metric2_actual | metric2_target
        A          16.41            20.00             68.54%            72.00%
        B          17.39            18.00             63.87%            60.00%

理想情况下,如果metric_actual小于目标,我希望单元格有红色文本,如果大于目标,我希望绿色文本。

我想使用.style选项将数据框输出到电子邮件中。我似乎无法逐行地弄清楚如何执行此操作,但是如果每个行的目标可能不同。

http://pandas.pydata.org/pandas-docs/stable/style.html

这些功能可以工作,但前提是我有一个静态列。我的问题是,对于数据中每一行的相同指标,目标是不同的。

def color_negative_red(value, target):
    color = 'red' if value < target else 'green'
    return 'color: %s' % color

编辑问题的是,我得到的真相是错误的错误&#39;:

 df.style.applymap(color_negative_red, target=df['metric_target'], subset=['metric_actual']

我觉得这应该是可能的,但我需要将每行的每个值与同一行中的相应目标值进行比较。

1 个答案:

答案 0 :(得分:1)

在您提供的参考页面中,<img>表示元素,Styler.applymap表示列/行/表。我使用了逐列修改Styler.apply函数的列式版本。

color_negative_red

给我这个结果:

enter image description here