首页 > 解决方案 > 使用python将字符串数组转换为浮点数

问题描述

我知道还有一千个人已经问过这个问题,但我已经尝试了大多数解决方案,但没有任何效果。我正在使用 spyder 和 python 3.8.8。

我有一个包含一些我想提取的数据的 csv。当我使用熊猫导入数据时,我想将其转换为浮点数,但目前无法。到目前为止,我有以下内容;

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,Off "[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.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]"

标签: pythonfloating-pointtype-conversion

解决方案


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

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

推荐阅读