问题描述:
我在一个数据框的列中读取了一个类似于数组的结构,其格式为字符串(从CSV文件中读取数据)。
该列中的一个字符串元素如下所示:
In [1]: df.iloc[0]['points']
Out [2]: '[(-0.0426, -0.7231, -0.4207), (0.2116, -0.1733, -0.1013), (...)]'
所以它真的是一个类似于数组的结构,对我来说看起来“准备好了用于numpy”。
numpy.fromstring()
无法帮助您,因为它不喜欢括号:
将数组的字符串表示转换为Python中的numpy数组
如果我将其复制并粘贴到array()
函数中,则仅对字符串执行简单的numpy.array()
会返回一个numpy数组。
但是,如果我像这样使用包含字符串的变量填充array()
函数:np.array(df.iloc[0]['points'])
它就不起作用,并给出ValueError:could not convert string to float
错误信息。
问题:
是否有任何可以简单完成此操作的函数(而不是替换或使用正则表达式去掉括号)?
ast.literal_eval
来反转它。这将适用于您发布的示例,但不能保证它将适用于您所有的数据,或者您不会遇到浮点舍入问题,这些问题在正确序列化的数据中不存在。这只是一个hack,而不是解决方案。 - abarnertrepr
字符串将包括dtype
信息。但由于这是DataFrame中的单元格,可能还有其他可能性。您是从csv
文件加载此df
吗?该文件中是否有像这样的引号字符串? - hpaulj