Python 将数据帧中的列表对象转换为numpy数组

Python 将数据帧中的列表对象转换为numpy数组,python,pandas,numpy,Python,Pandas,Numpy,我的一个dataframe列是m列的列表对象,每行如下所示 'List(0.42,0.24,0.78,…)包含n个元素的列表,这些元素用引号括起来。此列的数据类型为Object 我需要将此列转换为一个m X n np数组。到目前为止,我尝试应用np.fromstring(colcontent),但它主要返回“ValueError:字符串大小必须是元素大小的倍数”。不过,它在第一排确实有效 如何将此列表对象列适当地转换为数组?我们需要修剪字符串,然后拆分 np.array(s.str.strip(

我的一个dataframe列是m列的列表对象,每行如下所示
'List(0.42,0.24,0.78,…)
包含n个元素的列表,这些元素用引号括起来。此列的数据类型为Object

我需要将此列转换为一个m X n np数组。到目前为止,我尝试应用np.fromstring(colcontent),但它主要返回“ValueError:字符串大小必须是元素大小的倍数”。不过,它在第一排确实有效


如何将此列表对象列适当地转换为数组?

我们需要修剪字符串,然后拆分

np.array(s.str.strip('List').str.strip('(|)').str.split(', ').tolist())
Out[11]: 
array([['0.42', '0,24', '0.78,...'],
       ['0.42', '0,24', '0.78,...']], dtype='<U8')

您首先是如何存储列表字符串的?我认为,如果您将列值存储为实际列表而不是列表的字符串,那么会更容易。从下载的源代码中,这是一个字符串,而不是实际的
列表
,甚至不是一个求值为
列表
的字符串。它缺少列表中的
[]
。注意
0,24
。我想需要更仔细的修剪。据我所知,这是一个熊猫数据帧列,不是字符串数组。@Fast response。但OP将其编辑为
0.24
:D。这个解决方案当然仍然有效。感谢你的回答@BEN_YO(1)我用strip()和split来代替str.split,因为它将返回'str'对象没有属性'str'错误(2)更新了0,24打字错误,它只是0.24(3)不知何故,结果维度可能不同于np.fromstring()np.fromstring可能有问题吗?@santoku我认为numpy fromstring应该返回正确的结果~@santoku然后你可以检查你的真实数据,看看不同的结果~
s.str.strip('List').str.strip('(|)').str.split(',',expand=True).apply(lambda x : x.str.strip()).values
Out[18]: 
array([['0.42', '0', '24', '0.78', '...'],
       ['0.42', '0', '24', '0.78', '...']], dtype=object)