假设我有一个带有一些NaN
的系列s
:
import numpy as np
import pandas as pd
s = pd.Series([1, 2, np.nan])
print(s)
0 1.0
1 2.0
2 NaN
dtype: float64
并且我想执行比较操作,但保留NaN
s。例如,假设我想检查每个元素与2
的相等性,生成:
0 False
1 True
2 NaN
dtype: object
但如果我执行s == 2
,则NaN
元素的求值结果为False
:
print(s == 2)
0 False
1 True
2 False
dtype: bool
最好的方法是什么?
一种粗略的方法是对相等性检查输出进行第二次检查,并替换NaNs应为的任何行:
import numpy as np
import pandas as pd
s = pd.Series([1, 2, np.nan])
comp = s==2
comp[np.isnan(s)] = np.nan
print(comp)
0 False
1 True
2 NaN
dtype: object
一种方法:
s.where((s==2) | (pd.isna(s)), other=False).replace(2, True)
0 False
1 True
2 NaN
dtype: object