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