Ich mag würde eine Log-Transformation auf alle Spalten meines Datenrahmen in Julia anzuwenden:Verknüpfung zum Transformieren eine Datenrahmen
my_df = DataFrame(A = [1,2], B=[3,4])
Was ist eine prägnante Art und Weise, dies zu tun?
Ich mag würde eine Log-Transformation auf alle Spalten meines Datenrahmen in Julia anzuwenden:Verknüpfung zum Transformieren eine Datenrahmen
my_df = DataFrame(A = [1,2], B=[3,4])
Was ist eine prägnante Art und Weise, dies zu tun?
log_df = DataFrame(;Dict(c=>log(my_df[c]) for c in names(my_df))...)
recht kompakt zu sein scheint. Aber die anderen Kommentare und Antworten sind auch gut. Dies macht die Transformation nicht direkt. Um es zu tun in-place, verwenden:
foreach(x -> my_df[x] = log(my_df[x]), names(my_df))
von Bogumił vorgeschlagen (withtout der Sendung, siehe unten).
Zusätzlich gibt es die Frage der log(c::DataArray)
automatisch sendet, die log.(c::DataArray)
Rückkehr Müll macht:
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
Interessant. Unter Julia 0.6 rc1 'log. (My_df [: A])' funktioniert richtig (und wenn ich es richtig herbekomme, wo wir mit dem Sprachdesign gehen 'log (my_df [: A])' sollte bald abgeschrieben werden). –
@ BogumiłKamiński Der Ausdruck ist auf 'Version 0.7.0-DEV.360'. 'log.()' ergibt mehr Sinn. Diese Art von Instabilität macht weniger –
Abgesehen von den Vorschlägen in den Kommentaren gibt es derzeit keine maßgeschneiderte Funktionalität dafür. Sehen Sie dieses Thema für eine Diskussion: https://github.com/JuliaData/DataTables.jl/issues/36
'log_df = Dataframe (Karte (x-> Karte (log, x), (my_df [x] für x in Namen (my_df))), Namen (my_df)) ' –
foreach (x -> my_df [x] = log. (my_df [x]), Namen (my_df)) –
Dieses' colwise (log, my_df) ' macht das Protokoll, aber sammelt den DataFrame danach nicht (was ich voraussetze, dass Sie brauchen?) –