Python中字符串转数值(int/float)失败,求可行转换方法
解决带分隔符的数字字符串转数值类型问题
为什么之前的尝试失败
to_numeric是pandas库的函数,不是Python原生字符串对象的方法,不能直接用字符串调用。astype是numpy数组或pandas对象的方法,同样不能直接作用于字符串。- 直接转换float失败,是因为字符串包含逗号和空格,不符合纯数值的格式要求。
可行的转换方法
1. 原生Python拆分后逐个转换
先按分隔符, 拆分字符串,得到单个数字的字符串列表,再通过列表推导式或map转换为整数/浮点数:
i = '0, 1, 1, 0, 1, 1' # 转换为整数列表 int_values = [int(num) for num in i.split(', ')] # 转换为浮点数列表 float_values = [float(num) for num in i.split(', ')]
如果字符串里的分隔符是无空格的逗号(比如'0,1,1,0,1,1'),直接用split(',')即可;如果有不规则空格,先统一清理:i.replace(' ', '').split(',')。
2. 正确使用pandas的to_numeric
先拆分字符串,再用pd.to_numeric批量转换,返回pandas Series,可进一步转为列表或numpy数组:
import pandas as pd i = '0, 1, 1, 0, 1, 1' numeric_series = pd.to_numeric(i.split(', ')) # 转为numpy数组 numeric_array = numeric_series.values # 转为普通列表 numeric_list = numeric_series.tolist()
3. 正确使用numpy的astype
先将拆分后的字符串列表转为numpy数组,再用astype批量转换类型:
import numpy as np i = '0, 1, 1, 0, 1, 1' str_array = np.array(i.split(', ')) # 转为整数数组 int_array = str_array.astype(int) # 转为浮点数数组 float_array = str_array.astype(float)
内容的提问来源于stack exchange,提问作者Ang
相关产品推荐
相关产品推荐

