Джулия: Преобразуйте фрейм данных с несколькими строковыми столбцами в массив с плавающей точкой

#dataframe #julia

Вопрос:

У меня есть фрейм данных, в котором много строковых столбцов, вместо которых они должны быть float64. Я хотел бы преобразовать все столбцы сразу и преобразовать фрейм данных в массив с плавающей точкой. Как это можно сделать? Важно отметить, что есть также некоторые плавающие столбцы.

 df = DataFrame(a=["1", "2", "3"], b=["1.1", "2.2", "3.3"], c=[0.1, 0.2, 0.3])
# Verbose option
df.a = parse.(Float64, df.a)
df.b = parse.(Float64, df.b)
matrix = Matrix{Float64}(df)
# Is is possible to do this at once especially when there are float columns too?
# Here parse.(Float64, df.c) would throw an error
 

Ответ №1:

Один из способов сделать это-зациклить столбцы строк:

 for c ∈ names(df, String)
    df[!, c]= parse.(Float64, df[!, c])
end
 

Обратите внимание, что вам не нужно Matrix{Float64} , если вы уже превратили все в поплавки, просто Matrix(df) сделаем.