Преобразование строки типа данных для плавания в DataFrame - PullRequest
1 голос
/ 29 мая 2019

У меня есть данные в формате string, когда я использую DataFrame, они будут в формате Substring, но я хочу их в формате Float. Что мне делать?

x  = defect_positions[1:3]
>>>SubString{String}["4.71801", "17.2815", "0.187765"]    
>>>SubString{String}["17.3681", "17.1425", "6.13644"]     
>>>SubString{String}["0.439987", "0.00231646", "0.404172"]
DataFrame(permutedims(reduce(hcat, x))

x1  x2  x3
SubStrin…   SubStrin…   SubStrin…
1   4.71801 17.2815 0.187765
2   17.3681 17.1425 6.13644
3   0.439987    0.00231646  0.404172

Как я могу преобразовать мой DataFrame в плавающее?

1 Ответ

0 голосов
/ 29 мая 2019

DataFrame использует типы элементов входных коллекций. Вы должны преобразовать свои строки в числовой тип с плавающей запятой перед созданием DataFrame. Вы можете проанализировать строку как тип числа с плавающей запятой по вашему выбору с помощью parse.

# we map each `SubString` array in x (`SubString` arrays) 
# and parse each entries as `Float64` by broadcasting `parse`
parsed_x = map(i -> parse.(Float64, i), x) 
DataFrame(permutedims(reduce(hcat, parsed_x)))

Вы также можете выполнить преобразование после создания DataFrame со строками.

df = DataFrame(permutedims(reduce(hcat, x))
for i in 1:size(df, 2)
   df[i] = parse.(Float64, df[i])
end
df

Оба метода дают

│ Row │ x1      │ x2      │ x3       │
│     │ Float64 │ Float64 │ Float64  │
├─────┼─────────┼─────────┼──────────┤
│ 1   │ 4.71801 │ 17.2815 │ 0.187765 │
...
...