用字符串列表中的字符串替换 Numpy NaN
Replace Numpy NaN with string in list with strings
我有一个包含字符串元素和几个 NaN numpy 浮点数的列表。例如
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)
命令执行,但没有任何变化。
评论建议:
['missing' if x is 'nan' else x for x in l]
['missing' if x is np.isnan else x for x in l]
['missing' if x is np.nan else x for x in l]
命令执行,但没有任何变化。
我认为您的 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]
我有一个包含字符串元素和几个 NaN numpy 浮点数的列表。例如
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)
命令执行,但没有任何变化。
评论建议:
['missing' if x is 'nan' else x for x in l]
['missing' if x is np.isnan else x for x in l]
['missing' if x is np.nan else x for x in l]
命令执行,但没有任何变化。
我认为您的 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]