我想对 Julia 中数据帧的所有列应用日志转换:
my_df = DataFrame(A = [1,2], B=[3,4])
执行此操作的简洁方法是什么?
最佳答案
log_df = DataFrame(;Dict(c=>log(my_df[c]) for c in names(my_df))...)
看起来很紧凑。但其他评论和答案也很好。这不会就地进行转换。要就地执行此操作,请使用:
foreach(x -> my_df[x] = log(my_df[x]), names(my_df))
由 Bogumił 建议(没有广播,见下文)。
此外,还有log(c::DataArray)
自动广播的问题,这使得log.(c::DataArray)
返回垃圾:
julia> log(my_df[:A])
2-element DataArrays.DataArray{Float64,1}:
0.0
0.693147
julia> log.(my_df[:A])
0-dimensional DataArrays.DataArray{Float64,0}:
0.0
关于dataframe - 转换数据框的快捷方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44235201/