pandas DataFrame风格,高亮nan的

pandas DataFrame style, highlight nan's

用这个 DataFrame 说

df = pd.DataFrame({'name' : ['A','B'], 'date' : pd.to_datetime(['2000-01-01','2000-01-02']), 'value' : [np.nan, 1]})

        date name  value
0 2000-01-01    A    NaN
1 2000-01-02    B    1.0

如何检查 df.applymap 中的 nan 是哪个元素? (即不使用 df.isnull

问题出在我想使用 pandas html 样式的地方。我们有内置的 nan 突出显示

df.style.highlight_null()

但它改变了背景颜色,我希望 "nan" 显示为红色。

所以我需要自己用 applymap

df.style.applymap(lambda x: 'color: red' if isnan(x) else '')

但是当它也可以是 datetime/string 时,我如何检查一个值是否为 nan? np.isnan 将在字符串上失败。 np.isreal(x) and np.isnan(x) 在日期时间也失败。

您可以使用 pd.isnull(),它处理范围更广的缺失值检查类型:

import pandas as pd
df.style.applymap(lambda x: 'color: red' if pd.isnull(x) else '')

您还可以使用浮点数 ̀NaN` 值 :

df.style.applymap(lambda x: '' if x==x else 'color: red')