【问题标题】:Converting a string array to floats with python使用python将字符串数组转换为浮点数
【发布时间】:2021-12-12 19:22:24
【问题描述】:

我知道已经有上千人问过这个问题,但我已经尝试了大多数解决方案,但没有任何效果。我正在使用 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,关 “[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]”

【问题讨论】:

  • 您提供了一个有据可查的问题。是否可以包含您的 CSV 文件或其示例来重现此问题?
  • Numpy(也不是 python)无法将像 '8.25, 13.6, 18.8' 这样的字符串转换为浮点数。您需要将字符串拆分为较小的字符串,每个字符串代表一个数字,例如 ['8.25', '13.6', '18.8' ] 然后这些字符串中的每一个都可以转换为浮点数。因此,在删除括号后,添加行 ` D = [ float(num) for num in D.split(', ') ] `.

标签: python floating-point type-conversion


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2021-12-28
    • 2011-11-25
    • 2019-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多