我们来说吧
df = pd.DataFrame({'A': [1, 3, np.nan]})
df['B'] = df['A'] > 2
我想要这个
A B
0 1.0 False
1 3.0 True
2 NaN NaN
但它给了
A B
0 1.0 False
1 3.0 True
2 NaN False
如何获得我想要的结果,即使用布尔条件时 NaN 的传播?我的代码中有很多这样的条件表达式,如果可能的话,希望避免将它们全部替换为
lambda
函数或 .map
或 .apply
或 np.where
语句。
我尝试将所有
NaN
切换为pd.NA
,这给出了所需的结果,但似乎必须将dtype
更改为'Int64'
或'Float64'
以适应pd.NA
,然后不兼容与我正在使用的其他软件包(特别是 statsmodels
引发 TypeError
;似乎是一个已知的兼容性问题)。如果有人知道如何使 pd.NA
与 float
和 int
等标准数据类型兼容,那么我很乐意使用它。