我想在Julia中对数据框的所有列应用日志转换:
my_df = DataFrame(A = [1,2], B=[3,4])
这样做的简洁方法是什么?
答案 0 :(得分:1)
除了评论中给出的建议外,目前还没有任何定制功能。有关讨论,请参阅此问题:https://github.com/JuliaData/DataTables.jl/issues/36
答案 1 :(得分:1)
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