如何将NumPy数组中整数和千分位格式字符串统一转换为浮点数
解决方案
你的数组中混合了整数类型元素和欧洲格式的数字字符串(.为千分位分隔符,,为小数点),直接转换会报错,需要先对字符串做标准化处理再转浮点数。
方法1:列表推导式写法(适合小数据量,可读性高)
import numpy as np # 替换为你自己的原始object数组 obj_arr = np.array([758, 762, 762, '1.870,00', '1.870,00', '1.870,00'], dtype=object) float_arr = np.array([ float(str(x).replace('.', '').replace(',', '.')) for x in obj_arr ])
方法2:向量化写法(适合大数据量,性能更高)
利用NumPy内置的字符操作函数实现全量处理,避免Python级循环:
import numpy as np obj_arr = np.array([758, 762, 762, '1.870,00', '1.870,00', '1.870,00'], dtype=object) # 先把所有元素转成字符串 str_arr = obj_arr.astype(str) # 批量删除千分位的点,替换逗号为标准小数点 processed_str = np.char.replace(np.char.replace(str_arr, '.', ''), ',', '.') # 转浮点数 float_arr = processed_str.astype(float)
两种方法输出的float_arr都符合你的预期:
array([ 758., 762., 762., 1870., 1870., 1870.])
内容的提问来源于stack exchange,提问作者Blg Khalil
相关产品推荐
相关产品推荐

