pandas数据帧中的彩色单元格

时间:2017-03-20 11:37:43

标签: python pandas dataframe

我有一个具有不同值的数据框,但大多数是NaN(无)。我想为值不是None的单元格着色,其中实际值是。 例如:dataxml =

    1      2     3      4     5 
a  NaN    23    NaN   NaN    65
b  NaN    NaN    54   NaN   NaN
c   33    NaN   NaN   NaN   NaN
d  NaN    NaN    24   NaN   NaN

此代码颜色为整个数据帧:

def highlight_cells(value):
    if value != None:
        return 'background-color: yellow'

dataxml.style.applymap(highlight_cells)

2 个答案:

答案 0 :(得分:3)

据我所知,df.style仅在将数据框导出为HTML时使用。

对于Excel,如果我建议使用我编写的库,请参阅此示例代码(请注意,这是使用字符串作为列标题,因为使用整数作为标题存在一个小问题):

import pandas as pd
from StyleFrame import StyleFrame, Styler

df = pd.DataFrame({'1': [None, None, 33, None],
                   '2': [23, None, None, None],
                   '3': [None, 54, None, 24]})

sf = StyleFrame(df)
style = Styler(bg_color='yellow')
for col_name in df.columns:
    sf.apply_style_by_indexes(sf[~df[col_name].isnull()], cols_to_style=col_name,
                              styler_obj=style)
sf.to_excel('test.xlsx').save()

这将生成以下Excel:

enter image description here

答案 1 :(得分:1)

你可以这样做:

notnull_color = 'yellow'
df.style.applymap(lambda x: 'background-color: %s' % notnull_color if pd.notnull(x) else '')