我知道已经有成千上万的人提过这个问题,但我已经尝试了大部分的解决方案,都没有效果。我正在使用Spyder和Python 3.8.8。
我有一个包含一些数据的csv文件,我想要提取其中的数据。在使用pandas导入数据时,我想要将其转换为浮点数,但目前我无法实现。到目前为止,我有以下代码:
import pandas as pd
df = pd.read_csv("file.csv")
D = df.iloc[1,0]
D = np.array(D)
给我这个数组:
array('[8.25, 13.6, 18.8, 24.0, 29.02, 34.14, 44.63, 55.07, 65.31, 75.73, 85.96, 96.24, 107.0, 127.26, 136.68]dtype='<U103')
首先我尝试了
np.asarray(D, dtype=np.float64, order='C')
这给我带来了以下错误:
AttributeError: 'numpy.ndarray' object has no attribute 'asarray'
然后我尝试了一下
D = D.astype(np.float)
显示错误的信息
ValueError: could not convert string to float: '[8.25, 13.6, 18.8, 24.0, 29.02, 34.14, 44.63, 55.07, 65.31, 75.73, 85.96, 96.24, 107.0, 127.26, 136.68]'
然后我试着去掉一些字符,就像这样:
D = D.strip('[')
D = D.strip(']')
D = D.replace("'","")
然后,我重复了之前的步骤,尝试使用astype和asarray将新去除元素的数组以及这个数组转化为新类型。
D = np.asfarray(D,float)
但是我仍然会遇到诸如以下错误:
ValueError: could not convert string to float: '8.25, 13.6, 18.8, 24.0, 29.02, 34.14, 44.63, 55.07, 65.31, 75.73, 85.96, 96.24, 107.0, 127.26, 136.68'
现在我已经没有动力了,有人能解释一下出了什么问题以及我该如何修复吗?
谢谢Aidan,以下是csv文件,但是你让我想到了,也许我可以用更好的方式制作它。目前我正在循环中将数字附加到数组中,然后将它们写入csv。也许有人可以建议一种更好的格式化数组/ csv的方法,使这更容易实现?
压力,M,D,关闭 "[5,10,15,20,25,30,40,50,60,70,80,90,100,110,120,130]" "[8.25,13.6,18.8,24.0,29.02,34.14,44.63,55.07,65.31,75.73,85.96,96.24,107.0,127.26,136.68]" "[0.53,0.48,0.43,0.4,0.37,0.35,0.33,0.31,0.3,0.29,0.28,0.28,0.26,0.26,0.26]" "[-3.11,-3.18,-3.38,-3.59,-3.73,-4.14,-4.69,-5.23,-5.77,-6.27,-6.66,-7.06,-7.02,-7.86,-8.21]"
D = [float(num) for num in D.split(', ')]
。 - kubatucka