使用 python 将字符串数组转换为浮点数

Converting a string array to floats with python

我知道已经有上千人问过这个问题,但我已经尝试了大部分解决方案,但没有任何效果。我正在使用 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。也许有人可以建议一种更好的格式化 array/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]”

您的字符串看起来像一个 python 列表,考虑使用 eval() 或 pd.eval() 在创建数据框之前直接将字符串转换为列表。

pd.eval('[8.25, 13.6, 18.8, 24.0]')