Updating a value using a column

  1. To select column whose name is stored in field_in string just write df[!, field_in].
  2. 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)
  1. 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