python - 将 dtype <U30 的 numpy ndarray 转换为 float

标签 python arrays string pandas numpy

我正在从 pandas dataframe 单元格中读取列表。

>>from pandas import DataFrame as table
>>x = table.loc[table['person'] == int(123), table.columns != 'xyz']['segment'][0]
>>print("X = ",x)

其中“person”和“segment”是我的列名称,segment 包含一个具有 float 值的列表。

>>X = [[39.414, 39.498000000000005]]

现在,当我尝试将其转换为 numpy 数组时,

>>x = numpy.asarray(x)
>>x=x.astype(float)

出现以下错误

ValueError: could not convert string to float: '[[39.414, 39.498000000000005]]'

我已经尝试解析字符串并尝试删除任何“\n”或“”或任何不必要的引号,但它不起作用。然后我试图找到 dtype

>>print("Dtype = ", x.dtype)
>>Dtype = <U30

我假设我们需要将 U30 dtype 转换为 float ,但我不确定该怎么做。我使用的是 numpy 版本 1.15.0。

我想要做的就是,将上面的列表解析为一个具有浮点值的列表。

最佳答案

数据类型应该已经提示您了。 U30 代表长度为 30 的 unicode 字符串(如果您键入 len(x),您将看到它。

您拥有的是列表的字符串表示,而不是字符串/ float /等的列表。

你需要在这里使用ast库:

x = '[[39.414, 39.498000000000005]]'
x = ast.literal_eval(x)
np.array(x, dtype=float)

array([[39.414, 39.498]])

关于python - 将 dtype <U30 的 numpy ndarray 转换为 float,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52280146/

相关文章:

java - 转换数组(Component 到 JMenuItem)不起作用

c++ - 如何在 C++ 中的混合字符串整数行中提取特定整数

c - 我的程序替换链表中所有节点中的所有字符串数据类型

python - OpenCV 3.0缺少诸如drawMatches和drawMatchesKNN的方法

python - Python中的时变带通滤波器

python - Django - 如何遍历字典列表以连接来自同一元素的值

javascript - 将数组切片成数组数组

python - 绘制变化的数组

c - 在c中用相同的数字初始化数组会导致不同的值

c++ - 枚举作为参数返回字符串