我有一个dtype = object数组,其中的值是
Python列表或np.nan.
我想用[无](不是无)替换np.nan的值.
对于一个纯Python列表,我已经可以使用[x if(x不是np.nan)其他[无] for x in s],并且将数组转换为列表对我来说很好,但是出于好奇,我想知道如何使用numpy数组来完成这项工作.困难在于,当使用索引时,numpy尝试将任何列表解释为值列表,而不是我想要分配的实际值.
如果我想用2替换值,那么这很容易(正常的np,pd导入;除此之外,np.isnan在这个实例中不起作用,选择float NaN作为通用缺失值的弱点大熊猫,所以我使用pd.isnull,因为这是一个pandas内部问题,无论如何):
In [53]: s
Out[53]:
array([['asdf', 'asdf'], ['asdf'], nan, ['asdf', 'asdf', 'asdf'],
['asdf', 'asdf', 'asdf']], dtype=object)
In [55]: s[pd.isnull(s)] = 2
In [56]: s
Out[56]:
array([['asdf', 'asdf'], ['asdf'], 2, ['asdf', 'asdf', 'asdf'],
['asdf', 'asdf', 'asdf']], dtype=object)
然而,尝试用[None]替换它们而是用None替换它们:
In [58]: s
Out[58]:
array([['asdf', 'asdf'], ['asdf'], nan, ['asdf', 'asdf', 'asdf'],
['asdf', 'asdf', 'asdf']], dtype=object)
In [59]: s[pd.isnull(s)] = [None]
In [60]: s
Out[60]:
array([['asdf', 'asdf'], ['asdf'], None, ['asdf', 'asdf', 'asdf'],
['asdf', 'asdf', 'asdf']], dtype=object)
显然,这是人们99%的时间都想要的行为.碰巧这次,我想将列表指定为对象.有没有办法这样做?