3 回答

TA貢獻1829條經驗 獲得超9個贊
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...

TA貢獻1844條經驗 獲得超8個贊
我認為最有效的方法是使用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 ])

TA貢獻1873條經驗 獲得超9個贊
您應該分配列表理解的輸出:
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
每次迭代都會有一個不同的行元素,所以不是一個列表。
添加回答
舉報