3 回答

TA貢獻(xiàn)1943條經(jīng)驗(yàn) 獲得超7個贊
有點(diǎn)晚了,但供以后參考。
我遇到了同樣的問題,這是我解決的方法:
import pandas as pd
import numpy as np
dt = pd.DataFrame({'col1': [1,2,3,4,5], 'col2': [4,5,6,7,np.nan], 'col3': [8,2,6,np.nan,np.nan]})
先填入一個大值的nas
dt.fillna(dt.max().max()+1, inplace=True)
將此最大值的字體著色為白色的函數(shù)
def color_max_white(val, max_val):
color = 'white' if val == max_val else 'black'
return 'color: %s' % color
將最大值的背景著色為白色的函數(shù)
def highlight_max(data, color='white'):
attr = 'background-color: {}'.format(color)
if data.ndim == 1: # Series from .apply(axis=0) or axis=1
is_max = data == data.max()
return [attr if v else '' for v in is_max]
else: # from .apply(axis=None)
is_max = data == data.max().max()
return pd.DataFrame(np.where(is_max, attr, ''),
index=data.index, columns=data.columns)
把所有東西放在一起
max_val = dt.max().max()
dt.style.format("{:.2f}").background_gradient(cmap='Blues', axis=None).applymap(lambda x: color_max_white(x, max_val)).apply(highlight_max, axis=None)

TA貢獻(xiàn)1852條經(jīng)驗(yàn) 獲得超1個贊
這對我來說很好用
df.style.applymap(lambda x: 'color: transparent' if pd.isnull(x) else '')

TA貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超6個贊
我的背景漸變?nèi)詴褂米畲笾祦碛?jì)算顏色漸變。我實(shí)現(xiàn)了@night-train 的設(shè)置顏色圖的建議,然后使用了兩個函數(shù):
import copy
cmap = copy.copy(plt.cm.get_cmap("Blues"))
cmap.set_under("white")
def color_nan_white(val):
"""Color the nan text white"""
if np.isnan(val):
return 'color: white'
def color_nan_white_background(val):
"""Color the nan cell background white"""
if np.isnan(val):
return 'background-color: white'
然后再次將它們應(yīng)用到我的數(shù)據(jù)幀中,為方便起見,從@quant 中借用了一點(diǎn):
(df.style
.background_gradient(axis='index')
.applymap(lambda x: color_nan_white(x))
.applymap(lambda x: color_nan_white_background(x))
)
然后它完美地工作。
添加回答
舉報