我在看熊猫数据框的列表。
>>from pandas import DataFrame as table
>>x = table.loc[table['person'] == int(123), table.columns != 'xyz']['segment'][0]
>>print("X = ",x)
其中“person”和“segment”是我的列名,segment包含一个带有浮动值的列表。
>>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”或“”或任何不必要的引号,但它不起作用。然后我试图找到数据类型
>>print("Dtype = ", x.dtype)
>>Dtype = <U30
我想我们需要把u30数据类型转换成float,但我不知道如何做。我使用的是numpy版本1.15.0。
我只想把上面的列表解析成一个带浮点值的列表。
最佳答案
数据类型应该已经告诉你了。U30
这里代表一个长度为30 Unicode的字符串(如果键入len(x)
,就会看到这个字符串)。
你所拥有的是一个列表的字符串表示,而不是一个字符串/浮点数等的列表。。
您需要使用这里的ast
库:
x = '[[39.414, 39.498000000000005]]'
x = ast.literal_eval(x)
np.array(x, dtype=float)
array([[39.414, 39.498]])