Skip to content

Commit 79bd076

Browse files
authored
Merge pull request #947 from Kotlin/parse-fix
[Important Fix!] Parse started to removed unselected columns
2 parents 884a8b8 + 3cb9438 commit 79bd076

File tree

1 file changed

+13
-16
lines changed
  • core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/impl/api

1 file changed

+13
-16
lines changed

core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/impl/api/parse.kt

Lines changed: 13 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,13 @@ import org.jetbrains.kotlinx.dataframe.api.ParserOptions
2020
import org.jetbrains.kotlinx.dataframe.api.asColumnGroup
2121
import org.jetbrains.kotlinx.dataframe.api.asDataColumn
2222
import org.jetbrains.kotlinx.dataframe.api.cast
23-
import org.jetbrains.kotlinx.dataframe.api.emptyDataFrame
24-
import org.jetbrains.kotlinx.dataframe.api.getColumnsWithPaths
23+
import org.jetbrains.kotlinx.dataframe.api.convert
2524
import org.jetbrains.kotlinx.dataframe.api.isColumnGroup
2625
import org.jetbrains.kotlinx.dataframe.api.isFrameColumn
2726
import org.jetbrains.kotlinx.dataframe.api.isSubtypeOf
28-
import org.jetbrains.kotlinx.dataframe.api.toColumn
27+
import org.jetbrains.kotlinx.dataframe.api.map
28+
import org.jetbrains.kotlinx.dataframe.api.parse
29+
import org.jetbrains.kotlinx.dataframe.api.to
2930
import org.jetbrains.kotlinx.dataframe.api.tryParse
3031
import org.jetbrains.kotlinx.dataframe.columns.TypeSuggestion
3132
import org.jetbrains.kotlinx.dataframe.columns.size
@@ -531,17 +532,16 @@ internal fun <T> DataColumn<String?>.parse(parser: StringParser<T>, options: Par
531532
)
532533
}
533534

534-
internal fun <T> DataFrame<T>.parseImpl(options: ParserOptions?, columns: ColumnsSelector<T, Any?>): DataFrame<T> {
535-
val convertedCols = getColumnsWithPaths(columns).map { col ->
535+
internal fun <T> DataFrame<T>.parseImpl(options: ParserOptions?, columns: ColumnsSelector<T, Any?>): DataFrame<T> =
536+
convert(columns).to { col ->
536537
when {
537538
// when a frame column is requested to be parsed,
538539
// parse each value/frame column at any depth inside each DataFrame in the frame column
539-
col.isFrameColumn() ->
540-
col.values.map {
541-
it.parseImpl(options) {
542-
colsAtAnyDepth { !it.isColumnGroup() }
543-
}
544-
}.toColumn(col.name)
540+
col.isFrameColumn() -> col.map {
541+
it.parseImpl(options) {
542+
colsAtAnyDepth { !it.isColumnGroup() }
543+
}
544+
}
545545

546546
// when a column group is requested to be parsed,
547547
// parse each column in the group
@@ -552,11 +552,8 @@ internal fun <T> DataFrame<T>.parseImpl(options: ParserOptions?, columns: Column
552552

553553
// Base case, parse the column if it's a `String?` column
554554
col.isSubtypeOf<String?>() ->
555-
col.cast<String?>().tryParse(options)
555+
col.cast<String?>().tryParseImpl(options)
556556

557557
else -> col
558-
}.let { ColumnToInsert(col.path, it) }
558+
}
559559
}
560-
561-
return emptyDataFrame<T>().insertImpl(convertedCols)
562-
}

0 commit comments

Comments
 (0)