猿问

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

我是编程和 stackoverflow 的新手。抱歉,这似乎太基本了。我想把这个:


我正在尝试训练 AI 以根据历史数据预测汽车的目的地。它在一个列内,我必须遍历所有这些。我只列出它正在工作,但在列中,它不是出于某种原因。


我正在 anaconda 的 windows 10 上尝试这个,jupyter notebook


我想把这个:


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 之外找到,但是当我尝试为 colomn 中的每个框做它时:


for stuff in data['column']:

    [[x] for x in stuff]


for stuff in data_train['locations']:

    [map(int,x.split()) for x in stuff]

列中没有任何变化。


慕虎7371278
浏览 425回答 3
3回答

PIPIONE

apply与列表理解一起使用,将列表的每个值拆分,为floats并强制转换为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...  

婷婷同学_

我认为最有效的方法是使用ast.literal_eval():import asty = [list(ast.literal_eval(x)) for x in lst]现在,如果您有一列包含要转换为列表列表的字符串列表,那么您可以使用:df['new_col'] =df['col'].apply(lambda x: [list(ast.literal_eval(y)) for y in x ])

眼眸繁星

您应该分配列表理解的输出: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']]因为data['column']是一个元素列表,当你遍历它时,stuff每次迭代都会有一个不同的行元素,所以不是一个列表。
随时随地看视频慕课网APP

相关分类

Python
我要回答