Skip to content

Commit b7ca4b5

Browse files
committed
fix: selectBy order should respect original column order.
1 parent 4da069a commit b7ca4b5

1 file changed

Lines changed: 4 additions & 2 deletions

File tree

src/DataFrame/Operations/Subset.hs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ module DataFrame.Operations.Subset where
1010

1111
import qualified Data.List as L
1212
import qualified Data.Map as M
13+
import qualified Data.Set as S
1314
import qualified Data.Text as T
1415
import qualified Data.Vector as V
1516
import qualified Data.Vector.Generic as VG
@@ -295,9 +296,10 @@ byIndexRange = ColumnIndexRange
295296

296297
-- | O(n) select columns by column predicate name.
297298
selectBy :: [SelectionCriteria] -> DataFrame -> DataFrame
298-
selectBy xs df = select columnsWithProperties df
299+
selectBy xs df = select finalSelection df
299300
where
300-
columnsWithProperties = L.foldl' columnWithProperty [] xs
301+
finalSelection = Prelude.filter (`S.member` columnsWithProperties) (columnNames df)
302+
columnsWithProperties = S.fromList (L.foldl' columnWithProperty [] xs)
301303
columnWithProperty acc (ColumnName name) = acc ++ [name]
302304
columnWithProperty acc (ColumnNameProperty f) = acc ++ L.filter f (columnNames df)
303305
columnWithProperty acc (ColumnTextRange (from, to)) =

0 commit comments

Comments
 (0)