我有一个浮点数(显示为字符串)和NaN值的列表。
import numpy as np
mylist = ['1.0', '0.0', np.nan, 'a']
我需要将浮点字符串值转换为整数字符串值,同时忽略其余记录:
mylist = ['1', '0', np.nan, 'a']
我该怎么办?
我编写了以下代码,但我不知道如何处理异常np.nan
,a
等。
mylist2 = []
for i in mylist:
mylist2.append(str(int(float(n))))
答案 0 :(得分:1)
您可以使用调用函数的映射将它们转换为int:
def to_int(x):
try:
x = str(int(float(x)))
except:
pass
return x
np.array(list(map(to_int, mylist)), dtype=object)
# array(['1', '0', nan, 'a'], dtype=object)```
答案 1 :(得分:0)
尽管有不同的方法可以实现这一目标。但我们走吧。
这可能会有帮助。
mylist2 = []
for i in mylist:
try:
mylist2.append(str(int(float(n))))
except:
pass
答案 2 :(得分:0)
假设您只想使用原始值而不是可以转换为整数的数字字符串,则可以编写一个辅助函数尝试进行转换,如果引发异常,则返回原始值。
def try_int(s):
try:
return str(int(float(s)))
except:
return s
mylist2 = [try_int(s) for s in mylist]
请注意,从浮点字符串到int的转换有时会使字符串更长。例如,字符串'9e200'
将转换为201位数字的整数字符串。