Python 如何将字符串列表转换为列表列表?
我是编程和stackoverflow方面的新手。对不起,这似乎太基本了。 我试图扭转这一局面: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上尝试这个 我试图扭
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 ])