【问题标题】:python pandas coloring of rows行的python pandas着色
【发布时间】:2017-11-14 14:53:45
【问题描述】:

我有这段代码,每个时间段的颜色都不同,所以更容易导航。问题是,有时并不是所有的插槽都会被填充,然后我在下一个插槽上得到相同的颜色,并且很难区分哪个插槽是哪个插槽。 我怎样才能让这段代码更优雅,让python决定何时有下一个插槽来改变颜色。我想将这些颜色更改为“二进制”。

def EPP_Break_boja(row):
    color = '#F5EEF8'
    if row.values[0] == '06:40':
        color = '#EBF5FB  '
    elif row.values[0] == '07:10':
        color = '#FEF9E7  '
    elif row.values[0] == '07:40':
        color = '#EBF5FB  '
    elif row.values[0] == '08:10':
        color = '#FEF9E7  '
    elif row.values[0] == '08:40':
        color = '#EBF5FB  '
    elif row.values[0] == '09:10':
        color = '#FEF9E7  '
    elif row.values[0] == '09:40':
        color = '#EBF5FB  '
    elif row.values[0] == '10:10':
        color = '#FEF9E7  '
    elif row.values[0] == '10:40':
        color = '#EBF5FB  '
    elif row.values[0] == '11:10':
        color = '#FEF9E7  '
    elif row.values[0] == '11:40':
        color = '#EBF5FB  '
    elif row.values[0] == '12:10':
        color = '#FEF9E7  '
    elif row.values[0] == '12:40':
        color = '#EBF5FB  '
    elif row.values[0] == '13:10':
        color = '#FEF9E7  '
    elif row.values[0] == '13:40':
        color = '#EBF5FB  '
    elif row.values[0] == '14:10':
        color = '#FEF9E7  '
    elif row.values[0] == '14:40':
        color = '#EBF5FB  '
    elif row.values[0] == '15:10':
        color = '#FEF9E7  '
    elif row.values[0] == '15:40':
        color = '#EBF5FB  '
    elif row.values[0] == '16:10':
        color = '#FEF9E7  '
    elif row.values[0] == '16:40':
        color = '#EBF5FB  '
    elif row.values[0] == '17:10':
        color = '#FEF9E7  '
    elif row.values[0] == '17:40':
        color = '#EBF5FB  '
    elif row.values[0] == '18:10':
        color = '#FEF9E7  '
    elif row.values[0] == '18:40':
        color = '#EBF5FB  '
    elif row.values[0] == '19:10':
        color = '#FEF9E7  '
    elif row.values[0] == '19:40':
        color = '#EBF5FB  '
    elif row.values[0] == '20:10':
        color = '#FEF9E7  '
    elif row.values[0] == '20:40':
        color = '#EBF5FB  '
    elif row.values[0] == '21:10':
        color = '#FEF9E7  '
    elif row.values[0] == '21:40':
        color = '#EBF5FB  '
    elif row.values[0] == '22:10':
        color = '#FEF9E7  '
    elif row.values[0] == '22:40':
        color = '#EBF5FB  '
    elif row.values[0] == '23:10':
        color = '#FEF9E7  '
    elif row.values[0] == '23:40':
        color = '#EBF5FB  '
    elif row.values[0] == 'Thursday 12-October-2017':
        color = '#FDEDEC  '
    elif row.values[0] == 'Thursday 13-October-2017':
        color = '#EAFAF1'
    return ['background-color: %s' % color]*len(row.values)


dataframe_spotovi = dataframe_spotovi.style.apply(EPP_Break_boja, axis=1)
dataframe_spotovi

【问题讨论】:

    标签: python html css pandas


    【解决方案1】:

    下面的方法怎么样:

    In [112]: colors=['#EBF5FB  ','#FEF9E7  ']
    
    In [113]: df
    Out[113]:
        Time title     x
    0  06:40     a  2011
    1  06:40     b  2010
    2  07:10     c  2000
    3  08:10     d  1983
    
    In [114]: df.assign(col=np.take(colors, df.groupby('Time').ngroup() % 2))
    Out[114]:
        Time title     x        col
    0  06:40     a  2011  #EBF5FB
    1  06:40     b  2010  #EBF5FB
    2  07:10     c  2000  #FEF9E7
    3  08:10     d  1983  #EBF5FB
    

    【讨论】:

    • 这将只为每隔一行上色,无论行中的值如何。例如,如果索引 0 处的 col0 值也在索引 1,23 和 4 处,我希望在 #EBF5FB 中为 0-4 行着色。
    • d = {'x' : [2011, 2010, 2000, 1983], 'Time' : ['06:40', '06:40', '07:10', '08:10'], 'title' : ['a', 'b', 'c', 'd']} df =pd.DataFrame(d) df
    • 我希望颜色 1 为 06:40,颜色 nr 2 为 07:10,然后颜色 1 为 08:10
    猜你喜欢
    • 2015-03-20
    • 2019-01-15
    • 2017-07-03
    • 2019-05-08
    • 1970-01-01
    • 2020-10-10
    • 1970-01-01
    • 2018-10-21
    • 1970-01-01
    相关资源
    最近更新 更多