Dataframe 转换数据帧中的数据类型

Dataframe 转换数据帧中的数据类型,dataframe,julia,Dataframe,Julia,我想更改列的数据类型,我已经尝试使用convert函数来实现这一点 d = Dict("x" => [1,2,3,4,5],"y" => [6,7,8,9,10]) df = DataFrame(d) df[:,"x"] = convert.(Float64, df[:,"x"]) 对于列x 但是,对列使用点表示法是成功的 df.x = convert.(Float64, df.x) 成功地

我想更改列的数据类型,我已经尝试使用
convert
函数来实现这一点

d = Dict("x" => [1,2,3,4,5],"y" => [6,7,8,9,10])    
df = DataFrame(d)

df[:,"x"] = convert.(Float64, df[:,"x"])
对于列
x
但是,对列使用点表示法是成功的

df.x = convert.(Float64, df.x)
成功地从类型
Int64
转换为
Float64

但在我的例子中,我想使用for循环来转换列中的数据类型,因此我不得不使用第一种方法(可以想出一种使用点表示法的方法)。关于如何使用for a循环转换数据类型的任何想法

for nm in names(df)
    df[:, nm] = convert.(Float64, df[:,nm])
end
试一试


请注意括号中的“!”-这将为您提供实际的
数据帧列(类似于点符号),而“:”将提供它的副本。

您也可以写:

julia> df = DataFrame(rand(1:10, 3, 4), :auto)
3×4 DataFrame
 Row │ x1     x2     x3     x4
     │ Int64  Int64  Int64  Int64
─────┼────────────────────────────
   1 │     9      7      7     10
   2 │     2      5      7     10
   3 │     6      4      9      1

julia> transform!(df, names(df) .=> ByRow(Float64), renamecols=false)
3×4 DataFrame
 Row │ x1       x2       x3       x4
     │ Float64  Float64  Float64  Float64
─────┼────────────────────────────────────
   1 │     9.0      7.0      7.0     10.0
   2 │     2.0      5.0      7.0     10.0
   3 │     6.0      4.0      9.0      1.0

不需要使用
convert
。只要写
Float64.(df.nm)
就行了。谢谢你的编辑,把它弄混了。
julia> df = DataFrame(rand(1:10, 3, 4), :auto)
3×4 DataFrame
 Row │ x1     x2     x3     x4
     │ Int64  Int64  Int64  Int64
─────┼────────────────────────────
   1 │     9      7      7     10
   2 │     2      5      7     10
   3 │     6      4      9      1

julia> transform!(df, names(df) .=> ByRow(Float64), renamecols=false)
3×4 DataFrame
 Row │ x1       x2       x3       x4
     │ Float64  Float64  Float64  Float64
─────┼────────────────────────────────────
   1 │     9.0      7.0      7.0     10.0
   2 │     2.0      5.0      7.0     10.0
   3 │     6.0      4.0      9.0      1.0