转换数据帧的快捷方式

时间:2017-05-29 05:33:17

标签: dataframe julia

我想在Julia中对数据框的所有列应用日志转换:

my_df = DataFrame(A = [1,2], B=[3,4])

这样做的简洁方法是什么?

2 个答案:

答案 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