Python 如何将字符串列表转换为列表列表?

Python 如何将字符串列表转换为列表列表?,python,pandas,list,Python,Pandas,List,我是编程和stackoverflow方面的新手。对不起,这似乎太基本了。 我试图扭转这一局面: lst = ['55.7492,12.5405', '55.7492,12.5405', '55.7492,12.5406', '55.7492,12.5406'] 我试图训练一个人工智能,根据历史数据预测汽车的目的地。 它在一列中,我必须遍历所有列。 我只列出了一个列表,它是有效的,但在一列中,它不是出于某种原因 我正在anaconda,jupyter笔记本的Windows10上尝试这个 我试图扭

我是编程和stackoverflow方面的新手。对不起,这似乎太基本了。 我试图扭转这一局面:

lst = ['55.7492,12.5405', '55.7492,12.5405', '55.7492,12.5406', '55.7492,12.5406']
我试图训练一个人工智能,根据历史数据预测汽车的目的地。 它在一列中,我必须遍历所有列。 我只列出了一个列表,它是有效的,但在一列中,它不是出于某种原因

我正在anaconda,jupyter笔记本的Windows10上尝试这个

我试图扭转这一局面:

lst = ['55.7492,12.5405', '55.7492,12.5405', '55.7492,12.5406', '55.7492,12.5406']
进入这个

lst = [[55.7492,12.5405], [55.7492,12.5405], [55.7492,12.5406], [55.7492,12.5406]]
我有一个专栏,里面有很多csv文件

我试着把他们变成这样:


[[x] for x in lst]

[['55.7492,12.5405'],
 ['55.7492,12.5405'],
 ['55.7492,12.5406'],
 ['55.7492,12.5406']]
因此,它可以在csv之外工作,但当我尝试对列中的每个框进行查找时:

for stuff in data['column']:
    [[x] for x in stuff]

for stuff in data_train['locations']:
    [map(int,x.split()) for x in stuff]

列中没有任何更改。

您应该指定列表的输出:

for col in columns:  # where columns is a list of your columns
    data[col] = [[x] for x in data[col]]
或者仅在一列上,就足以:

data_train['locations'] = [map(int,x.split()) for x in data_train['locations']]

因为
数据['column']
是一个元素列表,当您循环它时,
stuff
在每次迭代中将是不同的行元素,所以不是列表。

使用
apply
和列表理解将列表的每个值拆分为
并转换为
float
s:

lst = ['55.7492,12.5405', '55.7492,12.5405', '55.7492,12.5406', '55.7492,12.5406']
df = pd.DataFrame({'column':[lst,lst]})

df['locations'] = df['column'].apply(lambda x: [list(map(float,y.split(','))) for y in x])
print (df)

                                              column  \
0  [55.7492,12.5405, 55.7492,12.5405, 55.7492,12....   
1  [55.7492,12.5405, 55.7492,12.5405, 55.7492,12....   

                                           locations  
0  [[55.7492, 12.5405], [55.7492, 12.5405], [55.7...  
1  [[55.7492, 12.5405], [55.7492, 12.5405], [55.7...  
尝试:

输出:

[['55.7492', '12.5405'], ['55.7492', '12.5405'], ['55.7492', '12.5406'], ['55.7492', '12.5406']]

我认为最有效的方法是使用:

现在,如果您有一个列,其中包含要转换为列表列表的字符串列表,则可以使用:

df['new_col'] =df['col'].apply(lambda x: [list(ast.literal_eval(y)) for y in x ])

在循环中从不分配任何内容,所以难怪没有任何变化。
df['new_col'] =df['col'].apply(lambda x: [list(ast.literal_eval(y)) for y in x ])