@@ -367,10 +367,13 @@ end
367
367
@testset " flatten single column" begin
368
368
df_vec = DataFrame (a= [1 , 2 ], b= [[1 , 2 ], [3 , 4 ]])
369
369
df_tup = DataFrame (a= [1 , 2 ], b= [(1 , 2 ), (3 , 4 )])
370
+ @test flatten (empty (df_vec), :b ) == DataFrame (a= [], b= [])
371
+ @test flatten (empty (df_tup), :b ) == DataFrame (a= [], b= [])
370
372
ref = DataFrame (a= [1 , 1 , 2 , 2 ], b= [1 , 2 , 3 , 4 ])
371
373
@test flatten (df_vec, :b ) == flatten (df_tup, :b ) == ref
372
374
@test flatten (df_vec, " b" ) == flatten (df_tup, " b" ) == ref
373
375
df_mixed_types = DataFrame (a= [1 , 2 ], b= [[1 , 2 ], [" x" , " y" ]])
376
+ @test flatten (empty (df_mixed_types), :b ) == DataFrame (a= [], b= [])
374
377
ref_mixed_types = DataFrame (a= [1 , 1 , 2 , 2 ], b= [1 , 2 , " x" , " y" ])
375
378
@test flatten (df_mixed_types, :b ) == ref_mixed_types
376
379
df_three = DataFrame (a= [1 , 2 , 3 ], b= [[1 , 2 ], [10 , 20 ], [100 , 200 , 300 ]])
@@ -382,17 +385,20 @@ end
382
385
@test flatten (df_gen, :b ) == ref_gen
383
386
@test flatten (df_gen, " b" ) == ref_gen
384
387
df_miss = DataFrame (a= [1 , 2 ], b= [Union{Missing, Int}[1 , 2 ], Union{Missing, Int}[3 , 4 ]])
388
+ @test flatten (empty (df_miss), :b ) == DataFrame (a= [], b= [])
385
389
ref = DataFrame (a= [1 , 1 , 2 , 2 ], b= [1 , 2 , 3 , 4 ])
386
390
@test flatten (df_miss, :b ) == ref
387
391
@test flatten (df_miss, " b" ) == ref
388
392
v1 = [[1 , 2 ], [3 , 4 ]]
389
393
v2 = [[5 , 6 ], [7 , 8 ]]
390
394
v = [v1, v2]
391
395
df_vec_vec = DataFrame (a= [1 , 2 ], b= v)
396
+ @test flatten (empty (df_vec_vec), :b ) == DataFrame (a= [], b= [])
392
397
ref_vec_vec = DataFrame (a= [1 , 1 , 2 , 2 ], b= [v1 ; v2])
393
398
@test flatten (df_vec_vec, :b ) == ref_vec_vec
394
399
@test flatten (df_vec_vec, " b" ) == ref_vec_vec
395
400
df_cat = DataFrame (a= [1 , 2 ], b= [CategoricalArray ([1 , 2 ]), CategoricalArray ([1 , 2 ])])
401
+ @test flatten (empty (df_cat), :b ) == DataFrame (a= [], b= [])
396
402
df_flat_cat = flatten (df_cat, :b )
397
403
ref_cat = DataFrame (a= [1 , 1 , 2 , 2 ], b= [1 , 2 , 1 , 2 ])
398
404
@test df_flat_cat == ref_cat
401
407
402
408
@testset " flatten multiple columns" begin
403
409
df = DataFrame (a= [1 , 2 ], b= [[1 , 2 ], [3 , 4 ]], c= [[5 , 6 ], [7 , 8 ]])
410
+ @test flatten (empty (df), []) == DataFrame (a= [], b= [], c= [])
411
+ @test flatten (empty (df), [:b , :c ]) == DataFrame (a= [], b= [], c= [])
412
+ @test flatten (empty (df), All ()) == DataFrame (a= [], b= [], c= [])
404
413
@test flatten (df, []) == df
405
414
ref = DataFrame (a= [1 , 1 , 2 , 2 ], b= [1 , 2 , 3 , 4 ], c= [5 , 6 , 7 , 8 ])
406
415
@test flatten (df, [:b , :c ]) == ref
418
427
@test flatten (df_allcols, :) == ref_allcols
419
428
df_bad = DataFrame (a= [1 , 2 ], b= [[1 , 2 ], [3 , 4 ]], c= [[5 , 6 ], [7 ]])
420
429
@test_throws ArgumentError flatten (df_bad, [:b , :c ])
430
+ @test flatten (DataFrame (), []) == DataFrame ()
431
+ @test flatten (DataFrame (), All ()) == DataFrame ()
421
432
end
422
433
423
434
@testset " stack categorical test" begin
0 commit comments