【问题标题】:Сonditional color formatting in PandasPandas 中的条件颜色格式
【发布时间】:2019-07-05 10:34:12
【问题描述】:

条件格式的任务(我猜是使用样式) 蟒蛇,熊猫

有一个有两列的板

应该突出显示第二个表格 条件:

  1. 如果第一列数超过第二列,则为绿色;
  2. 如果第一列数等于第二列数,则为黄色;
  3. 如果第一列编号小于第二列,则为红色。[

感谢您的帮助!

【问题讨论】:

标签: python pandas styling


【解决方案1】:

想法是使用Styler.apply创建由样式填充的新DataFrame,按条件设置行使用DataFrame.mask

def highlight(x):
    c1 = 'background-color: green'
    c2 = 'background-color: yellow'
    c3 = 'background-color: red'

    m1 = x.iloc[:, 0] > x.iloc[:, 1]
    m2 = x.iloc[:, 0] == x.iloc[:, 1]

    df1 = pd.DataFrame(c3, index=x.index, columns=x.columns)
    return df1.mask(m1, c1).mask(m2, c2)

df.style.apply(highlight, axis=None)

编辑:

如果只需要设置一列,请使用numpy.select:

def highlight(x):
    c1 = 'background-color: green'
    c2 = 'background-color: yellow'
    c3 = 'background-color: red'
    c = ''

    m1 = x.iloc[:, 0] > x.iloc[:, 1]
    m2 = x.iloc[:, 0] == x.iloc[:, 1]

    df1 = pd.DataFrame(c, index=x.index, columns=x.columns)
    df1.iloc[:, 1] = np.select([m1, m2], [c1, c2], default=c3)
    return df1

【讨论】:

    【解决方案2】:

    您可以使用pandas.DataFrame.style.apply 和一些格式化函数应用列格式:https://pandas.pydata.org/pandas-docs/stable/user_guide/style.html

    【讨论】:

    • 请在此处添加一些格式化功能,以防链接在将来某个时候断开。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-02
    • 2016-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多