From 06c352352fde5e90d738959e54d43efb255bcc15 Mon Sep 17 00:00:00 2001 From: Nicole Epp Date: Fri, 19 Jan 2018 11:28:26 -0600 Subject: [PATCH] Fix combining DataFrames with a column of Missings (#1344) fixes #1280 --- src/abstractdataframe/abstractdataframe.jl | 4 ++-- test/cat.jl | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/abstractdataframe/abstractdataframe.jl b/src/abstractdataframe/abstractdataframe.jl index 65591f860c..1956277c13 100644 --- a/src/abstractdataframe/abstractdataframe.jl +++ b/src/abstractdataframe/abstractdataframe.jl @@ -763,8 +763,8 @@ Base.hcat(df1::AbstractDataFrame, df2::AbstractDataFrame, dfn::AbstractDataFrame @generated function promote_col_type(cols::AbstractVector...) T = mapreduce(x -> Missings.T(eltype(x)), promote_type, cols) - if T <: CategoricalValue - T = T.parameters[1] + if CategoricalArrays.iscatvalue(T) + T = CategoricalArrays.leveltype(T) end if any(col -> eltype(col) >: Missing, cols) if any(col -> col <: AbstractCategoricalArray, cols) diff --git a/test/cat.jl b/test/cat.jl index 3ba7de2455..2a05a6cf09 100644 --- a/test/cat.jl +++ b/test/cat.jl @@ -157,6 +157,10 @@ module TestCat # vcat should be able to concatenate different implementations of AbstractDataFrame (PR #944) @test vcat(view(DataFrame(A=1:3),2),DataFrame(A=4:5)) == DataFrame(A=[2,4,5]) + # vcat should be able to combine a DataFrame with a column full of Missings + df = DataFrame(A=1:3, B=missing) + @test isequal(vcat(df, df), DataFrame(A=repeat(1:3, outer=2), B=missing)) + @testset "vcat >2 args" begin @test vcat(DataFrame(), DataFrame(), DataFrame()) == DataFrame() df = DataFrame(x = trues(1), y = falses(1))