用字符串替换Numpy NaN和列表中的字符串

时间:2017-03-28 09:42:11

标签: python string list replace nan

我有一个包含字符串元素的列表,以及几个NaN numpy浮点数。 E.g。

l=['foo', 'bar', 'baz', 'nan']

如何将浮动nan替换为字符串missing

我发现大多数答案都是在pandas DataFrame中考虑这个问题。

<小时/> 尝试1:

for x in l:
    x=x.replace('nan', 'missing')

给出AttributeError: 'float' object has no attribute 'replace'

尝试2:

for x in l:
   if str(x)=='nan':
       x=str(x)

命令执行,但没有任何变化。

<小时/> 通过评论提供建议:

  1. ['missing' if x is 'nan' else x for x in l]
  2. ['missing' if x is np.isnan else x for x in l]
  3. ['missing' if x is np.nan else x for x in l]
  4. 命令执行,但没有任何变化。

1 个答案:

答案 0 :(得分:0)

我认为你的NaN格式很糟糕(请注意,nan已经超过了nan而不是'nan')。评论的答案应该有效:

>>> import numpy as np
>>> l=['foo', 'bar', 'baz', np.nan]
>>> print l
['foo', 'bar', 'baz', nan]
>>> l_new=['missing' if x is np.nan else x for x in l]
>>> print l_new
['foo', 'bar', 'baz', 'missing']

对于您当前的问题,可以提出以下解决方案:

my_nan=l['some_index_with_nan']
l_new=['missing' if x is my_nan else x for x in l]