如何将"[nan,1,2,3]"
字符串转换为列表[nan,1,2,3]
?
如果我使用
from ast import literal_eval
literal_eval("[1,2,3]")
我明白了
[1, 2, 3]
但是,如果我尝试转换其中带有nan
的字符串,则会发生以下错误:
File "<unknown>", line 1
[nan 1 2 3
^
SyntaxError: invalid syntax
Process finished with exit code 1
答案 0 :(得分:5)
尝试使用np.fromstring
例如:
import numpy as np
lst = '[nan 1 2 3]'
print(np.fromstring(lst.strip("[]"), sep=' '))
#-->[nan 1. 2. 3.]
答案 1 :(得分:1)
使用numpy.fromstring
:
>>> s = '[nan, 1, 2, 3]'
>>> import numpy as np
>>> a = np.fromstring(s[1:-1], sep=', ')
>>> a
array([ nan, 1., 2., 3.])
>>>
答案 2 :(得分:1)
您可以将NaN
替换为<{>是有效的python的None
,然后使用literal_eval
:
s = "[nan,1,2,3]"
literal_eval(s.replace('nan', 'None'))
# [None, 1, 2, 3]
答案 3 :(得分:1)
如果您愿意使用numpy,则可以对浮点数使用隐式类型转换(请注意,对于整数,没有nan)
import numpy as np
a = "[nan 1 2 3]"
np.array(a[1:-1].split(), dtype="f")
#array([nan, 1., 2., 3.], dtype=float32)