如何将字符串列表转换为列表列表? [关闭]

Posted

技术标签:

【中文标题】如何将字符串列表转换为列表列表? [关闭]【英文标题】:How can I turn list of strings to list of lists? [closed] 【发布时间】:2019-08-17 22:15:21 【问题描述】:

我是编程和 *** 方面的新手。抱歉,这似乎太基本了。 我正在尝试改变这个:

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

我正在 Windows 10 的 anaconda 和 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 之外找到了工作,但是当我尝试为列中的每个框做它时:

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

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

列中没有任何变化。

【问题讨论】:

您从不在循环中分配任何内容,因此没有任何变化也就不足为奇了。 【参考方案1】:

apply 与列表推导一起使用,以将列表的每个值按, 拆分并转换为floats:

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...  

【讨论】:

【参考方案2】:

您应该分配列表理解的输出:

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 在每次迭代中都会是不同的行元素,所以不是列表。

【讨论】:

【参考方案3】:

试试:

New = [str(val).split(",") for val in lst]
print(New)

输出:

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

【讨论】:

【参考方案4】:

我认为最有效的方法是使用ast.literal_eval():

import ast
y = [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 ])

【讨论】:

以上是关于如何将字符串列表转换为列表列表? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

将一些字符串转换为数组或列表 [关闭]

如何将列表的字符串表示形式转换为列表?

如何将列表的字符串表示形式转换为列表?

如何将字符串列表转换为c#中的浮点列表,统一?

如何将列表转换为字符串[重复]

如何将 intable 字符串列表转换为 int