FWIW, in case this helps.
The numbers are loaded as strings for processing the digits and parsed to floats later:
using CSV, DataFrames
const input="""
date,tmax
1-Jan-2000,5.7E3
2-Feb-2001,31.88700
3-Mar-2002,100e0
4-Apr-2003,100.1
"""
df = DataFrame(CSV.File(IOBuffer(input), types=Dict(:date=>String, :tmax=>String)))
str = split.(string.(first.(split.(lowercase.(df.tmax),'e'))),'.')
df.sdigs = zeros(Int, nrow(df))
for (i,s) in pairs(str)
df.sdigs[i] = length(s[1])
(length(s)>1) && (df.sdigs[i] += length(rstrip(s[2],'0')))
end
df.tmax = parse.(Float64, df.tmax)
df
# Result:
Row │ date tmax sdigs
│ String Float64 Int64
─────┼─────────────────────────────
1 │ 1-Jan-2000 5700.0 2
2 │ 2-Feb-2001 31.887 5
3 │ 3-Mar-2002 100.0 3
4 │ 4-Apr-2003 100.1 4