我正在从 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/