Understanding LoadError: ArgumentError in Tables.jl interface

I am trying to create and save simple array using either of the two methods:

using CSV, DataFrames

#Attempt 1
let 
    N = 20
    My_Array = []
    i = 0
    for b=2:N-1
        i += 1
        summation = 0.0
        for n=1:5
            summation -= n^2 * log(2*n)
        end
        push!(My_Array, summation)
    end
    fileOut = "output_array.csv"
    CSV.write(fileOut, DataFrame(My_Array), header = false)
end 

#Attempt 2
let 
    N = 20
    My_Array = Array{Float64}(undef, N)
    i = 0
    for b=2:N-1
        i += 1
        summation = 0.0
        for n=1:5
            summation -= n^2 * log(2*n)
        end
        My_Array[i] = summation
    end
    fileOut = "output_array.csv"
    CSV.write(fileOut, DataFrame(My_Array), header = false)
end 

I am struggling to find the reason for and the meaning to the following error message:

ERROR: LoadError: ArgumentError: ‘Vector{Any}’ iterates ‘Float64’ values, which doesn’t satisfy the Tables.jl AbstractRow interface

My_Array in your example is a Vector, DataFrame(...) doesn’t want Vectors. It wants something either (1) Table-like or (2) keyword arguments. Try

DataFrame(x = My_Array)

instead.

Thanks!
The natural followups are
(i) Does the same fix work if My_Array is NxN, NxNxN, etc? For instance, I’ve tried to save an NxN array get the message

LoadError: ArgumentError: adding AbstractArray other than AbstractVector as a column of a data frame is not allowed

Is this the same kind of error?
(ii) Is there a site where I can learn about documentation in an efficient way? I’m thinking of Wolfram Mathematica and how it has the format of a given function along with examples.

It is documented here Types · DataFrames.jl

Thank you!