Skip to content

Commit

Permalink
clean up permutecols!, up CategoricalArrays.jl to 0.7 and sync tests …
Browse files Browse the repository at this point in the history
…with Julia 1.3
  • Loading branch information
bkamins authored Oct 5, 2019
1 parent a286c33 commit 8bec53d
Show file tree
Hide file tree
Showing 4 changed files with 101 additions and 191 deletions.
2 changes: 1 addition & 1 deletion Project.toml
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ test = ["DataStructures", "DataValues", "Dates", "LaTeXStrings", "Logging", "Ran

[compat]
julia = "1"
CategoricalArrays = ">= 0.5.4"
CategoricalArrays = ">= 0.7.0"
Compat = "2.0.0"
DataAPI = "1.0.1"
InvertedIndices = "1"
Expand Down
61 changes: 0 additions & 61 deletions src/dataframe/dataframe.jl
Original file line number Diff line number Diff line change
Expand Up @@ -1383,64 +1383,3 @@ function Base.push!(df::DataFrame, row::Any)
end
df
end

"""
permutecols!(df::DataFrame, p::AbstractVector)
Permute the columns of `df` in-place, according to permutation `p`. Elements of `p` may be
either column indices (`Int`) or names (`Symbol`), but cannot be a combination of both. All
columns must be listed.
### Examples
```julia
julia> df = DataFrame(a=1:5, b=2:6, c=3:7)
5×3 DataFrame
│ Row │ a │ b │ c │
│ │ Int64 │ Int64 │ Int64 │
├─────┼───────┼───────┼───────┤
│ 1 │ 1 │ 2 │ 3 │
│ 2 │ 2 │ 3 │ 4 │
│ 3 │ 3 │ 4 │ 5 │
│ 4 │ 4 │ 5 │ 6 │
│ 5 │ 5 │ 6 │ 7 │
julia> permutecols!(df, [2, 1, 3]);
julia> df
5×3 DataFrame
│ Row │ b │ a │ c │
│ │ Int64 │ Int64 │ Int64 │
├─────┼───────┼───────┼───────┤
│ 1 │ 2 │ 1 │ 3 │
│ 2 │ 3 │ 2 │ 4 │
│ 3 │ 4 │ 3 │ 5 │
│ 4 │ 5 │ 4 │ 6 │
│ 5 │ 6 │ 5 │ 7 │
julia> permutecols!(df, [:c, :a, :b]);
julia> df
5×3 DataFrame
│ Row │ c │ a │ b │
│ │ Int64 │ Int64 │ Int64 │
├─────┼───────┼───────┼───────┤
│ 1 │ 3 │ 1 │ 2 │
│ 2 │ 4 │ 2 │ 3 │
│ 3 │ 5 │ 3 │ 4 │
│ 4 │ 6 │ 4 │ 5 │
│ 5 │ 7 │ 5 │ 6 │
```
"""
function permutecols!(df::DataFrame, p::AbstractVector)
if !(length(p) == size(df, 2) && isperm(p))
throw(ArgumentError("$p is not a valid column permutation for this DataFrame"))
end
permute!(_columns(df), p)
@inbounds permute!(index(df), p)
df
end

function permutecols!(df::DataFrame, p::AbstractVector{Symbol})
permutecols!(df, index(df)[p])
end
2 changes: 1 addition & 1 deletion test/broadcasting.jl
Original file line number Diff line number Diff line change
Expand Up @@ -717,7 +717,7 @@ end
df[!, :c5] .= (x->v[2]).(v)
@test unique(df.c5) == [get(v[2])]
@test df.c5 isa CategoricalVector
@test length(levels(df.c5)) == 1
@test levels(df.c5) == levels(v)
end
end

Expand Down
227 changes: 99 additions & 128 deletions test/show.jl
Original file line number Diff line number Diff line change
Expand Up @@ -52,167 +52,138 @@ end

@testset "displaysize test" begin
Random.seed!(1)
df_big = DataFrame(rand(25,5))
df_big = DataFrame(rand(Int64(10000000):Int64(20000000), 25,5))

io = IOContext(IOBuffer(), :displaysize=>(11,40), :limit=>true)
show(io, df_big)
str = String(take!(io.io))
@test str == """
25×5 DataFrame. Omitted printing of 2 columns
│ Row │ x1 │ x2 │ x3 │
│ │ Float64 │ Float64 │ Float64
│ │ Int64 │ Int64 │ Int64
├─────┼──────────┼──────────┼──────────┤
│ 1 │ 0.2360330.6448830.440897
│ 1 │ 115699851217810917315979
│ 24 │ 0.2785820.2415910.990741
│ 25 │ 0.7513130.8848370.550334"""
│ 24 │ 146600951352940719204569
│ 25 │ 169927611537913913043102"""

io = IOContext(IOBuffer(), :displaysize=>(11,40), :limit=>true)
show(io, df_big, allcols=true)
str = String(take!(io.io))
@test str == """
25×5 DataFrame
│ Row │ x1 │ x2 │ x3 │
│ │ Float64 │ Float64 │ Float64
│ │ Int64 │ Int64 │ Int64
├─────┼──────────┼──────────┼──────────┤
│ 1 │ 0.2360330.6448830.440897
│ 1 │ 115699851217810917315979
│ 24 │ 0.2785820.2415910.990741
│ 25 │ 0.7513130.8848370.550334
│ 24 │ 146600951352940719204569
│ 25 │ 169927611537913913043102
│ Row │ x4 │ x5 │
│ │ Float64 │ Float64
│ │ Int64 │ Int64
├─────┼──────────┼──────────┤
│ 1 │ 0.5807820.138763
│ 1 │ 1070154017870314
│ 24 │ 0.7622760.755415
│ 25 │ 0.3390810.649056"""
│ 24 │ 1913729016313933
│ 25 │ 1231484317754964"""

io = IOContext(IOBuffer(), :displaysize=>(11,40), :limit=>true)
show(io, df_big, allrows=true, allcols=true)
str = String(take!(io.io))
@test str == """
25×5 DataFrame
│ Row │ x1 │ x2 │
│ │ Float64 │ Float64 │
├─────┼────────────┼───────────┤
│ 1 │ 0.236033 │ 0.644883 │
│ 2 │ 0.346517 │ 0.0778264 │
│ 3 │ 0.312707 │ 0.848185 │
│ 4 │ 0.00790928 │ 0.0856352 │
│ 5 │ 0.488613 │ 0.553206 │
│ 6 │ 0.210968 │ 0.46335 │
│ 7 │ 0.951916 │ 0.185821 │
│ 8 │ 0.999905 │ 0.111981 │
│ 9 │ 0.251662 │ 0.976312 │
│ 10 │ 0.986666 │ 0.0516146 │
│ 11 │ 0.555751 │ 0.53803 │
│ 12 │ 0.437108 │ 0.455692 │
│ 13 │ 0.424718 │ 0.279395 │
│ 14 │ 0.773223 │ 0.178246 │
│ 15 │ 0.28119 │ 0.548983 │
│ 16 │ 0.209472 │ 0.370971 │
│ 17 │ 0.251379 │ 0.894166 │
│ 18 │ 0.0203749 │ 0.648054 │
│ 19 │ 0.287702 │ 0.417039 │
│ 20 │ 0.859512 │ 0.144566 │
│ 21 │ 0.0769509 │ 0.622403 │
│ 22 │ 0.640396 │ 0.872334 │
│ 23 │ 0.873544 │ 0.524975 │
│ 24 │ 0.278582 │ 0.241591 │
│ 25 │ 0.751313 │ 0.884837 │
│ Row │ x3 │ x4 │
│ │ Float64 │ Float64 │
├─────┼───────────┼───────────┤
│ 1 │ 0.440897 │ 0.580782 │
│ 2 │ 0.404673 │ 0.768359 │
│ 3 │ 0.736787 │ 0.519525 │
│ 4 │ 0.953803 │ 0.514863 │
│ 5 │ 0.0951856 │ 0.998136 │
│ 6 │ 0.519675 │ 0.603682 │
│ 7 │ 0.0135403 │ 0.758775 │
│ 8 │ 0.303399 │ 0.590953 │
│ 9 │ 0.702557 │ 0.722086 │
│ 10 │ 0.596537 │ 0.953207 │
│ 11 │ 0.638935 │ 0.384411 │
│ 12 │ 0.872347 │ 0.320011 │
│ 13 │ 0.548635 │ 0.865625 │
│ 14 │ 0.262992 │ 0.45457 │
│ 15 │ 0.526443 │ 0.420287 │
│ 16 │ 0.465019 │ 0.225151 │
│ 17 │ 0.275519 │ 0.286169 │
│ 18 │ 0.461823 │ 0.309144 │
│ 19 │ 0.951861 │ 0.170391 │
│ 20 │ 0.288737 │ 0.147162 │
│ 21 │ 0.661232 │ 0.230063 │
│ 22 │ 0.194568 │ 0.0929292 │
│ 23 │ 0.393193 │ 0.681415 │
│ 24 │ 0.990741 │ 0.762276 │
│ 25 │ 0.550334 │ 0.339081 │
│ Row │ x5 │
│ │ Float64 │
├─────┼───────────┤
│ 1 │ 0.138763 │
│ 2 │ 0.456446 │
│ 3 │ 0.739918 │
│ 4 │ 0.816004 │
│ 5 │ 0.114529 │
│ 6 │ 0.748928 │
│ 7 │ 0.878108 │
│ 8 │ 0.930481 │
│ 9 │ 0.896291 │
│ 10 │ 0.663145 │
│ 11 │ 0.472799 │
│ 12 │ 0.880525 │
│ 13 │ 0.0141033 │
│ 14 │ 0.502774 │
│ 15 │ 0.224851 │
│ 16 │ 0.287858 │
│ 17 │ 0.104033 │
│ 18 │ 0.475749 │
│ 19 │ 0.416681 │
│ 20 │ 0.521387 │
│ 21 │ 0.908499 │
│ 22 │ 0.102832 │
│ 23 │ 0.670421 │
│ 24 │ 0.755415 │
│ 25 │ 0.649056 │"""
│ Row │ x1 │ x2 │ x3 │
│ │ Int64 │ Int64 │ Int64 │
├─────┼──────────┼──────────┼──────────┤
│ 1 │ 11569985 │ 12178109 │ 17315979 │
│ 2 │ 19192686 │ 15027856 │ 16050701 │
│ 3 │ 11140411 │ 13293718 │ 12677906 │
│ 4 │ 11985459 │ 15660106 │ 13057018 │
│ 5 │ 19201756 │ 11621062 │ 12785196 │
│ 6 │ 18146532 │ 15031398 │ 17264273 │
│ 7 │ 13797788 │ 12442579 │ 14445511 │
│ 8 │ 10315853 │ 15868969 │ 17213493 │
│ 9 │ 12916299 │ 18460443 │ 12300445 │
│ 10 │ 13157897 │ 10639979 │ 10106305 │
│ 11 │ 16871306 │ 17775325 │ 12544912 │
│ 12 │ 15251225 │ 10795979 │ 17976274 │
│ 13 │ 13028558 │ 12220954 │ 17347524 │
│ 14 │ 13057734 │ 17805919 │ 18183984 │
│ 15 │ 16120716 │ 12095491 │ 12250720 │
│ 16 │ 17157319 │ 12697043 │ 11145594 │
│ 17 │ 19264603 │ 16981136 │ 12984027 │
│ 18 │ 11292293 │ 19779844 │ 18722894 │
│ 19 │ 12360733 │ 13117985 │ 11836582 │
│ 20 │ 13975865 │ 14529221 │ 18458601 │
│ 21 │ 11416596 │ 17150526 │ 14731764 │
│ 22 │ 19587351 │ 15978326 │ 17757430 │
│ 23 │ 10802633 │ 17029758 │ 12105159 │
│ 24 │ 14660095 │ 13529407 │ 19204569 │
│ 25 │ 16992761 │ 15379139 │ 13043102 │
│ Row │ x4 │ x5 │
│ │ Int64 │ Int64 │
├─────┼──────────┼──────────┤
│ 1 │ 10701540 │ 17870314 │
│ 2 │ 15507419 │ 16954480 │
│ 3 │ 16317941 │ 10996749 │
│ 4 │ 16740306 │ 18240586 │
│ 5 │ 14628017 │ 14818074 │
│ 6 │ 14239854 │ 12226254 │
│ 7 │ 16972931 │ 17422692 │
│ 8 │ 16291319 │ 18748371 │
│ 9 │ 11568636 │ 19668632 │
│ 10 │ 12073431 │ 11550526 │
│ 11 │ 14037727 │ 19458202 │
│ 12 │ 12911112 │ 17083732 │
│ 13 │ 11111638 │ 18826082 │
│ 14 │ 14534511 │ 18412780 │
│ 15 │ 19921217 │ 12593752 │
│ 16 │ 12449162 │ 19192439 │
│ 17 │ 11091987 │ 17326521 │
│ 18 │ 16884903 │ 19680264 │
│ 19 │ 18348781 │ 16089361 │
│ 20 │ 10189747 │ 13978329 │
│ 21 │ 19285347 │ 11039190 │
│ 22 │ 14664380 │ 17880065 │
│ 23 │ 18398749 │ 12751655 │
│ 24 │ 19137290 │ 16313933 │
│ 25 │ 12314843 │ 17754964 │"""

io = IOContext(IOBuffer(), :displaysize=>(11,40), :limit=>true)
show(io, df_big, allrows=true, allcols=false)
str = String(take!(io.io))
@test str == """
25×5 DataFrame. Omitted printing of 3 columns
│ Row │ x1 │ x2 │
│ │ Float64Float64
├─────┼────────────┼───────────┤
│ 1 │ 0.236033 0.644883
│ 2 │ 0.346517 0.0778264
│ 3 │ 0.312707 0.848185
│ 4 │ 0.007909280.0856352
│ 5 │ 0.488613 0.553206
│ 6 │ 0.210968 0.46335
│ 7 │ 0.951916 0.185821
│ 8 │ 0.999905 0.111981
│ 9 │ 0.251662 0.976312
│ 10 │ 0.986666 0.0516146
│ 11 │ 0.555751 0.53803
│ 12 │ 0.437108 0.455692
│ 13 │ 0.424718 0.279395
│ 14 │ 0.773223 0.178246
│ 15 │ 0.28119 │ 0.548983
│ 16 │ 0.209472 0.370971
│ 17 │ 0.251379 0.894166
│ 18 │ 0.0203749 │ 0.648054
│ 19 │ 0.287702 0.417039
│ 20 │ 0.859512 0.144566
│ 21 │ 0.0769509 │ 0.622403
│ 22 │ 0.640396 0.872334
│ 23 │ 0.873544 0.524975
│ 24 │ 0.278582 0.241591
│ 25 │ 0.751313 0.884837 """
25×5 DataFrame. Omitted printing of 2 columns
│ Row │ x1 │ x2 │ x3
│ │ Int64Int64 │ Int64
├─────┼──────────┼──────────┼──────────┤
│ 1 │ 11569985 │ 1217810917315979
│ 2 │ 19192686 │ 1502785616050701
│ 3 │ 11140411 │ 1329371812677906
│ 4 │ 1198545915660106 │ 13057018
│ 5 │ 19201756 │ 1162106212785196
│ 6 │ 18146532 │ 1503139817264273
│ 7 │ 13797788 │ 1244257914445511
│ 8 │ 10315853 │ 1586896917213493
│ 9 │ 12916299 │ 1846044312300445
│ 10 │ 13157897 │ 1063997910106305
│ 11 │ 16871306 │ 1777532512544912
│ 12 │ 15251225 │ 1079597917976274
│ 13 │ 13028558 │ 1222095417347524
│ 14 │ 13057734 │ 1780591918183984
│ 15 │ 16120716 │ 12095491 │ 12250720
│ 16 │ 17157319 │ 1269704311145594
│ 17 │ 19264603 │ 1698113612984027
│ 18 │ 11292293 │ 19779844 │ 18722894
│ 19 │ 12360733 │ 1311798511836582
│ 20 │ 13975865 │ 1452922118458601
│ 21 │ 11416596 │ 17150526 │ 14731764
│ 22 │ 19587351 │ 1597832617757430
│ 23 │ 10802633 │ 1702975812105159
│ 24 │ 14660095 │ 1352940719204569
│ 25 │ 16992761 │ 1537913913043102"""
end

@testset "IOContext parameters test" begin
Expand Down

0 comments on commit 8bec53d

Please sign in to comment.