【发布时间】:2023-03-19 02:20:01
【问题描述】:
我正在从 pandas 数据框单元格中读取一个列表。
>>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”或“”或任何不必要的引号,但它不起作用。然后我试图找到dtype
>>print("Dtype = ", x.dtype)
>>Dtype = <U30
我假设我们需要将 U30 dtype 转换为浮点数,但我不知道该怎么做。我正在使用 numpy 版本 1.15.0。
我想要做的就是,将上面的列表解析成一个带有浮点值的列表。
【问题讨论】:
-
你能添加一些模拟数据以便重现吗?
-
看起来你有一个列表的字符串表示。首先尝试使用
ast.literal_eval(x)。在整个列上执行此操作以使这更容易:df.segment = df.segment.apply(ast.literal_eval)
标签: python arrays string pandas numpy