如何使用 Pandas 为数据框中新添加的值着色?

How to color newly added values in a data frame with Pandas?

我想突出显示(或着色)DataFrame 中以前为 NaN 的新值。

我有 2 个具有相同索引的数据框。

一个为 NaN

df_nan = pd.DataFrame(np.random.randint(10, size = (10, 10))).replace(8, np.nan)
df_nan

    0       1       2   3   4   5       6   7   8       9
0   NaN     NaN     7   0   0   0.0     0   6   2.0     4.0
1   6.0     3.0     7   1   0   5.0     3   5   NaN     7.0
2   5.0     6.0     0   1   0   NaN     2   4   4.0     7.0
3   NaN     2.0     6   3   1   4.0     9   0   5.0     3.0
4   9.0     0.0     5   2   2   5.0     6   0   9.0     1.0
5   9.0     4.0     0   2   3   9.0     2   9   3.0     4.0
6   4.0     4.0     9   6   7   1.0     7   9   5.0     NaN
7   0.0     NaN     9   2   0   5.0     7   6   3.0     NaN
8   9.0     9.0     0   0   4   6.0     3   3   1.0     7.0
9   3.0     6.0     3   2   7   1.0     6   5   2.0     9.0

另一个("updated" 一个),其中 NaN 已被新值替换(每列的平均值)

df_new = df_nan.replace(np.nan, np.mean(df_nan))
df_new

    0       1       2  3    4   5       6   7   8       9
0   5.62    4.25    7   0   0   0.0     0   6   2.00    4.00
1   6.00    3.00    7   1   0   5.0     3   5   3.77    7.00
2   5.00    6.00    0   1   0   4.0     2   4   4.00    7.00
3   5.62    2.00    6   3   1   4.0     9   0   5.00    3.00
4   9.00    0.00    5   2   2   5.0     6   0   9.00    1.00
5   9.00    4.00    0   2   3   9.0     2   9   3.00    4.00
6   4.00    4.00    9   6   7   1.0     7   9   5.00    5.25
7   0.00    4.25    9   2   0   5.0     7   6   3.00    5.25
8   9.00    9.00    0   0   4   6.0     3   3   1.00    7.00
9   3.00    6.00    3   2   7   1.0     6   5   2.00    9.00

如何使用 Pandas .style.applymap() 方法突出显示或着色新值(均值)?

任何帮助将不胜感激!

style = 'color: yellow; background: red; border: 3px solid green'
funct = lambda d: df_nan.isnull() * style
df_new.style.apply(funct, None)