scicloj/tablecloth

reorder-columns doesn't work

Closed this issue · 2 comments

pdmct commented

reorder-columns and select-columns doesn't observe the provided column order

using tablecloth 5.00-beta-3
tech.ml.datatset 5.00-beta-5

tech.ml.dataset/select-columns does work

tablecloth>  (def dss (ds/->dataset {:idx [1 1 1 2 2 2 3 3 3] :a ["a" "b" "c" "a" "b" "c" "a" "b" "c"] :b [1 2 3 2 3 4 3 2 1] :c [3 1 2 4 2 1 3 2 4]}))
#'tablecloth/dss
tablecloth> dss
_unnamed [9 4]:

| :idx | :a | :b | :c |
|------|----|----|----|
|    1 |  a |  1 |  3 |
|    1 |  b |  2 |  1 |
|    1 |  c |  3 |  2 |
|    2 |  a |  2 |  4 |
|    2 |  b |  3 |  2 |
|    2 |  c |  4 |  1 |
|    3 |  a |  3 |  3 |
|    3 |  b |  2 |  2 |
|    3 |  c |  1 |  4 |
tablecloth> (api/reorder-columns dss [:ids :b :a :c])
_unnamed [9 4]:

| :a | :b | :c | :idx |
|----|----|----|------|
|  a |  1 |  3 |    1 |
|  b |  2 |  1 |    1 |
|  c |  3 |  2 |    1 |
|  a |  2 |  4 |    2 |
|  b |  3 |  2 |    2 |
|  c |  4 |  1 |    2 |
|  a |  3 |  3 |    3 |
|  b |  2 |  2 |    3 |
|  c |  1 |  4 |    3 |
tablecloth> (api/select-columns dss [:idx :b :a :C])
_unnamed [9 3]:

| :idx | :a | :b |
|------|----|----|
|    1 |  a |  1 |
|    1 |  b |  2 |
|    1 |  c |  3 |
|    2 |  a |  2 |
|    2 |  b |  3 |
|    2 |  c |  4 |
|    3 |  a |  3 |
|    3 |  b |  2 |
|    3 |  c |  1 |
tablecloth> (ds/select-columns dss [:idx :b :a :c])
_unnamed [9 4]:

| :idx | :b | :a | :c |
|------|----|----|----|
|    1 |  1 |  a |  3 |
|    1 |  2 |  b |  1 |
|    1 |  3 |  c |  2 |
|    2 |  2 |  a |  4 |
|    2 |  3 |  b |  2 |
|    2 |  4 |  c |  1 |
|    3 |  3 |  a |  3 |
|    3 |  2 |  b |  2 |
|    3 |  1 |  c |  4 |

Thank you. Confirmed. It's a bug in gathering column names and as I see can influence also other parts of tablecloth.

(column-names dss [:ids :b :a :c])
;; => (:a :b :c) <- this gives wrong order...

5.00-beta-5a