如何将字符串列表转换为列表列表? [关闭]
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
与列表推导一起使用,以将列表的每个值按,
拆分并转换为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...
【讨论】:
【参考方案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 ])
【讨论】:
以上是关于如何将字符串列表转换为列表列表? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章