For just one column I could do something like: filter(x->(ismissing(x.a) || !isnan(x.a)), df)
To extend this to all columns I tried to use the subset function in combination with the usual DataFrame transformation syntax, but couldn’t get it to work: subset(df, :a => ByRow(x->(ismissing(x) || !isnan(x)))) (works) subset(df, names(df, Union{Float64, Missing}) .=> ByRow(x->(ismissing(x) || !isnan(x)))) (doesn’t work)
But if you do mmap array files on disk and merge them without copy to a DataFrame you cannot use a column type with union of missing. And imagine some new user come from python with deep habit of using NaN as missing. There could still be value adding the dropna function by default.
By its definition, NaN is a value of floating point representations, so it is “non-sensical” to ask a non floating point if it is NaN. Similarly, there is no iszero for Char.