python - 使用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]"
解决方案
您的字符串看起来像一个 python 列表,请考虑在创建数据框之前使用 eval() 或 pd.eval() 将字符串直接转换为列表。
pd.eval('[8.25, 13.6, 18.8, 24.0]')
推荐阅读
- javascript - 如何将图层添加到数组?
- magento - 将 jquery 添加到管理面板内的 Mganto 页面 [wysiwig 编辑器]
- r - 优化运行时间:更改 igraph 中边的权重需要很长时间。有没有办法优化它?
- python - 将大文本文件与 python 结合起来
- php - 如何从表中获取并显示具有特定用户 ID 的行的所有数据?
- android - 无法同步 gradle android studio 4.0
- unit-testing - Kotlin Mockk:找不到答案
- python - 电报机器人 switch_inline_query
- node.js - Node.js 应用程序通过 HTTP 工作,但不能通过 HTTPS 工作
- html - how to clear black dash in html button?