假设我有一个带NaNs的系列:
pd.Series([0, 1, None, 1])
我想将其转换为等于:
pd.Series([False, True, None, True])
您认为x == 1
就足够了,但这会返回:
pd.Series([False, True, False, True])
其中null值变为False
。这是因为np.nan == 1
返回False
,而不是像R中的None
或np.nan
。
是否有一种很好的,矢量化的方式来获得我想要的东西?
答案 0 :(得分:1)
你可以在哪里使用:
In [11]: (s == 1).where(s.notnull(), np.nan)
Out[11]:
0 0
1 1
2 NaN
3 1
dtype: float64
注意:True和False已被强制转换为0和1。
答案 1 :(得分:1)
也许map
可以做到:
import pandas as pd
x = pd.Series([0, 1, None, 1])
print x.map({1: True, 0: False})
0 False
1 True
2 NaN
3 True
dtype: object