我有一个如下所示的数据框。
A B C D E
1 1 2 3 -4
a 3 4 5 5
1 2 3 2 9
b 3 4 4 nan
当 A 列中的值是数字时,我想根据 A 列和另一列之间的差异用颜色填充每个单元格。
例如,如果A列的GAP是10或更多,我想用蓝色填充它, 如果 GAP 为 -10 或更小,我想用红色填充它。我该如何编码?
style
与自定义函数一起使用:
import numpy as np
def color(df, subset=['B', 'C', 'D'], up=10, low=-10):
tmp = df[subset].sub(pd.to_numeric(df['A'], errors='coerce'), axis=0)
return pd.DataFrame(np.select([tmp.gt(up), tmp.lt(low)],
['background-color: blue',
'background-color: red'],
None), columns=subset, index=df.index
).reindex_like(df)
df.style.apply(color, axis=None)
输出(使用不同的输入):
对子集和阈值进行硬编码:
def color(df):
tmp = df[['B', 'C', 'D']].sub(pd.to_numeric(df['A'], errors='coerce'), axis=0)
return pd.DataFrame(np.select([tmp.gt(10), tmp.lt(-10)],
['background-color: blue',
'background-color: red'],
None), columns=subset, index=df.index
).reindex_like(df)