You could use a Union type for the column to make assignment of a string a valid operation:
julia> df = DataFrame(a = 1:3, b = rand(3))
3×2 DataFrame
Row │ a b
│ Int64 Float64
─────┼─────────────────
1 │ 1 0.644675
2 │ 2 0.754814
3 │ 3 0.458067
julia> df.b = convert(Vector{Union{Float64,String}}, df.b);
julia> df.b[2] = "zeroish"
"zeroish"
julia> CSV.write("test.csv", df)
"test.csv"
julia> readlines("test.csv")
4-element Vector{String}:
"a,b"
"1,0.6446749255742438"
"2,zeroish"
"3,0.4580669558867503"