Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 创建作为对象存储在单个列中的列表列表_Python_Dataframe - Fatal编程技术网

Python 创建作为对象存储在单个列中的列表列表

Python 创建作为对象存储在单个列中的列表列表,python,dataframe,Python,Dataframe,我将列表作为对象存储在一列数据中。我需要从这些“列表”中创建一个列表,但它们未被识别为列表 我曾尝试将列转换为列表、连接、创建一个系列,但结果未被视为列表 我所拥有的: code1 Out[83]: 0 ['hair', 'body'] 1 ['hair', 'body'] 2 ['hair', 'body'] Name: personal_interests, dtype: object code1.tolist() Out[79]: ["['hair', 'body']

我将列表作为对象存储在一列数据中。我需要从这些“列表”中创建一个列表,但它们未被识别为列表

我曾尝试将列转换为列表、连接、创建一个系列,但结果未被视为列表

我所拥有的:

code1
Out[83]: 
0    ['hair', 'body']
1    ['hair', 'body']
2    ['hair', 'body']
Name: personal_interests, dtype: object

code1.tolist()
Out[79]: ["['hair', 'body']", "['hair', 'body']", "['hair', 'body']"]
我需要的是:

example = [['hair', 'body'],
           ['hair', 'body'],
           ['hair', 'body']]
example
Out[94]: [['hair', 'body'], ['hair', 'body'], ['hair', 'body']]

以下解决方案计算字符串内的列表并将其附加到新的空列表:

from ast import literal_eval
l1 = ["['hair', 'body']", "['hair', 'body']", "['hair', 'body']"]
l2 = []
for i in l1:
    l2.append(literal_eval(i))
l2 
#[['hair', 'body'], ['hair', 'body'], ['hair', 'body']]
我试图通过将列表作为字符串而不是纯列表传递来重现问题:

df= pd.DataFrame({'a':["['hair', 'body']", "['hair', 'body']"]})
df
        a
0   ['hair', 'body']
1   ['hair', 'body']
正如您将注意到的,数据帧中的元素不显示为字符串,而是显示为普通列表。当我将序列转换为列表时,元素以字符串表示,如预期的那样:

df['a'].tolist()
#["['hair', 'body']", "['hair', 'body']"]
所以现在,如果我们对所有元素应用
literal\u eval,然后将其转换为list,我们就会得到所需的结果

df['a'].apply(literal_eval).tolist()
#[['hair', 'body'], ['hair', 'body']]

可能是字符串,而不是列表,但它在屏幕上看起来像列表。我用单元格中的列表创建了DF,
tolist()
为我提供了列表列表。太好了,谢谢你的指点,我不熟悉ast包,但我现在一定要看一下。谢谢你,阿曼布!不客气。我还试图重现这个问题,似乎原始元素将被创建为字符串而不是列表。类似这样的东西:
df=pd.DataFrame({'a':[“['hair','body']”,“['hair','body']”])
,有了这样一个
df
我可以重现这个问题。但是,如果这些最初是列表,那么它会给出预期的输出。您还可以展示数据框是如何创建的吗?它是以.csv格式创建并导入的。导入时可能有一种方法将列视为列表。在pandas中,建议使用
read\u csv
函数读取csv文件。首先,csv中的数据可能是字符串而不是列表。