1

用这个 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

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

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

df.style.highlight_null()

但它改变了背景颜色,而不是我希望“nan”显示为红色。

所以我需要自己做applymap

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

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

4

2 回答 2

7

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

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

在此处输入图像描述

于 2017-03-05T18:39:26.363 回答
0

您还可以使用浮点 ̀NaN 值不等于自身的事实:

df.style.applymap(lambda x: '' if x==x else 'color: red')
于 2019-12-04T10:33:29.533 回答