我有一个具有不同值的数据框,但大多数是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)
答案 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:
答案 1 :(得分:1)
你可以这样做:
notnull_color = 'yellow'
df.style.applymap(lambda x: 'background-color: %s' % notnull_color if pd.notnull(x) else '')