- To select column whose name is stored in
field_in string just write df[!, field_in].
- How to create a dictionary I am talking about:
julia> d = Dict("bucket_1" => (tooling=0, latency=34.90)) # some initial data as an example
Dict{String, NamedTuple{(:tooling, :latency), Tuple{Int64, Float64}}} with 1 entry:
"bucket_1" => (tooling = 0, latency = 34.9)
julia> new_data = (bucket="bucket_2", tooling=1, latency=35.12)
(bucket = "bucket_2", tooling = 1, latency = 35.12)
julia> d[new_data.bucket] = new_data[(:tooling, :latency)]
(tooling = 1, latency = 35.12)
julia> d
Dict{String, NamedTuple{(:tooling, :latency), Tuple{Int64, Float64}}} with 2 entries:
"bucket_2" => (tooling = 1, latency = 35.12)
"bucket_1" => (tooling = 0, latency = 34.9)
- You can use
DataFrame also, but it will be slower and more complicated:
julia> using DataFrames
julia> df = DataFrame(bucket="bucket_1", tooling=0, latency=34.90) # some initial data as an example
1×3 DataFrame
Row │ bucket tooling latency
│ String Int64 Float64
─────┼────────────────────────────
1 │ bucket_1 0 34.9
julia> new_data = (bucket="bucket_2", tooling=1, latency=35.12)
(bucket = "bucket_2", tooling = 1, latency = 35.12)
julia> loc = findfirst(==(new_data.bucket), df.bucket) # check if new bucket is in the data
julia> if isnothing(loc) # new value
push!(df, new_data)
else # value already present
df[loc, :tooling] = new_data.tooling
df[loc, :latency] = new_data.latency
end
2×3 DataFrame
Row │ bucket tooling latency
│ String Int64 Float64
─────┼────────────────────────────
1 │ bucket_1 0 34.9
2 │ bucket_2 1 35.12
1 Like