我试图创建基于整数比较的虚拟变量,其中Nan是常见的 . 如果存在任何Nan值,则A>比较会引发错误,但我希望比较返回Nan . 我知道我可以使用fillna()来替换Nan,我知道这个值是假的,但我希望有更优雅的方法来做到这一点 . 我需要更改fillna()中的值,如果我使用少于,或使用可能是正面或负面的变量,这是另一个创建错误的机会 . 有没有办法让30 <Nan = Nan?
要清楚,我想要这个:
df['var_dummy'] = df[df['var'] >= 30].astype('int')
如果var为null则返回null;如果是30则返回0,否则返回0 . 目前我得到ValueError:无法从重复轴重新索引 .
1 回答
这是一种方式:
这掩盖了从
(s1 < s2)
返回的布尔数组(如果它们中的任何一个是NaN) . 在这种情况下,它返回NaN . 但是你不能在一个布尔数组中使用NaN,因此它将被转换为float .