Skip to content

Commit c5f65ce

Browse files
authored
FIX: Don't use preprocess in Map and Replace (#200)
* FIX: Don't use 'preprocess' in 'Map' and 'Replace' * Fix code
1 parent dcb3970 commit c5f65ce

File tree

2 files changed

+20
-29
lines changed

2 files changed

+20
-29
lines changed

src/transforms/map.jl

+13-17
Original file line numberDiff line numberDiff line change
@@ -61,27 +61,14 @@ isrevertible(::Type{Map}) = true
6161

6262
_makename(snames, fun) = Symbol(join([snames; nameof(fun)], "_"))
6363

64-
function preprocess(transform::Map, table)
65-
cols = Tables.columns(table)
66-
names = Tables.columnnames(cols)
64+
function applyfeat(transform::Map, feat, prep)
65+
cols = Tables.columns(feat)
66+
onames = Tables.columnnames(cols)
6767

6868
colspecs = transform.colspecs
6969
funs = transform.funs
7070
targets = transform.targets
7171

72-
map(colspecs, funs, targets) do colspec, fun, target
73-
snames = choose(colspec, names)
74-
newname = isnothing(target) ? _makename(snames, fun) : target
75-
columns = (Tables.getcolumn(cols, nm) for nm in snames)
76-
newcolumn = map(fun, columns...)
77-
newname => newcolumn
78-
end
79-
end
80-
81-
function applyfeat(::Map, feat, prep)
82-
cols = Tables.columns(feat)
83-
onames = Tables.columnnames(cols)
84-
8572
# new names and columns
8673
names = collect(onames)
8774
columns = Any[Tables.getcolumn(cols, nm) for nm in onames]
@@ -90,7 +77,16 @@ function applyfeat(::Map, feat, prep)
9077
rnames = empty(names)
9178
rcolumns = empty(columns)
9279

93-
for (name, column) in prep
80+
# mapped columns
81+
mapped = map(colspecs, funs, targets) do colspec, fun, target
82+
snames = choose(colspec, names)
83+
newname = isnothing(target) ? _makename(snames, fun) : target
84+
scolumns = (Tables.getcolumn(cols, nm) for nm in snames)
85+
newcolumn = map(fun, scolumns...)
86+
newname => newcolumn
87+
end
88+
89+
for (name, column) in mapped
9490
if name onames
9591
push!(rnames, name)
9692
i = findfirst(==(name), onames)

src/transforms/replace.jl

+7-12
Original file line numberDiff line numberDiff line change
@@ -60,33 +60,28 @@ end
6060

6161
isrevertible(::Type{<:Replace}) = true
6262

63-
function preprocess(transform::Replace, table)
64-
cols = Tables.columns(table)
63+
function applyfeat(transform::Replace, feat, prep)
64+
cols = Tables.columns(feat)
6565
names = Tables.columnnames(cols)
6666

6767
colspecs = transform.colspecs
6868
preds = transform.preds
6969
news = transform.news
7070

71-
# column replacements
72-
colreps = map(colspecs, preds, news) do colspec, pred, new
71+
# preprocess all replacements
72+
prepreps = map(colspecs, preds, news) do colspec, pred, new
7373
snames = choose(colspec, names)
7474
snames => pred => new
7575
end
7676

7777
# join replacements of each column
78-
map(names) do name
79-
pairs = filter(p -> name first(p), colreps)
78+
colreps = map(names) do name
79+
pairs = filter(p -> name first(p), prepreps)
8080
reps = isempty(pairs) ? nothing : map(last, pairs)
8181
name => reps
8282
end
83-
end
84-
85-
function applyfeat(::Replace, feat, prep)
86-
cols = Tables.columns(feat)
87-
names = Tables.columnnames(cols)
8883

89-
tuples = map(prep) do (name, reps)
84+
tuples = map(colreps) do (name, reps)
9085
x = Tables.getcolumn(cols, name)
9186
if isnothing(reps)
9287
x, nothing

0 commit comments

Comments
 (0)