将数据类型字符串转换为浮在DataFrame中

时间:2019-05-28 21:45:36

标签: dataframe julia

我有一个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转换为float?

1 个答案:

答案 0 :(得分:0)

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 │
...