【发布时间】:2017-08-21 07:42:50
【问题描述】:
我有一个包含字符串元素的列表,以及几个 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)
命令执行,但没有任何变化。
由 cmets 建议:
['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]
命令执行,但没有任何变化。
【问题讨论】:
-
l = [text if text != 'nan' else 'missing' for text in l]是一种方法。 -
请注意,您的代码示例包含一个字符串,而不是 (numpy) NaN。
-
如果您的列表包含实际 NaN 和字符串,这可以与列表理解一起使用:
l = [text if not np.isnan(text) else 'missing' for text in l]。 -
它在我的列表中显示为
nan。当我想更改时,它会给出一个浮动错误。 -
"当我想更改时,它会给出一个浮动错误。":这没有意义:显示您的代码尝试和回溯。
标签: python string list replace nan