From 083c902a7042e7fb97581c3f15f72a7cfb4e5f0f Mon Sep 17 00:00:00 2001 From: Jolan Rensen Date: Mon, 14 Oct 2024 12:30:44 +0200 Subject: [PATCH 1/2] change default flatten parent-child separator to "_" --- .../jetbrains/kotlinx/dataframe/api/flatten.kt | 16 ++++++++++------ .../kotlinx/dataframe/impl/api/flatten.kt | 3 ++- .../jetbrains/kotlinx/dataframe/api/flatten.kt | 2 +- 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/flatten.kt b/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/flatten.kt index 07102bac18..f0fbe77cde 100644 --- a/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/flatten.kt +++ b/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/flatten.kt @@ -9,37 +9,41 @@ import org.jetbrains.kotlinx.dataframe.columns.toColumnSet import org.jetbrains.kotlinx.dataframe.impl.api.flattenImpl import kotlin.reflect.KProperty +public const val FLATTEN_DEFAULT_SEPARATOR: String = "_" + // region DataFrame @Refine @Interpretable("FlattenDefault") -public fun DataFrame.flatten(keepParentNameForColumns: Boolean = false, separator: String = "."): DataFrame = - flatten(keepParentNameForColumns, separator) { all() } +public fun DataFrame.flatten( + keepParentNameForColumns: Boolean = false, + separator: String = FLATTEN_DEFAULT_SEPARATOR, +): DataFrame = flatten(keepParentNameForColumns, separator) { all() } @Refine @Interpretable("Flatten0") public fun DataFrame.flatten( keepParentNameForColumns: Boolean = false, - separator: String = ".", + separator: String = FLATTEN_DEFAULT_SEPARATOR, columns: ColumnsSelector, ): DataFrame = flattenImpl(columns, keepParentNameForColumns, separator) public fun DataFrame.flatten( vararg columns: String, keepParentNameForColumns: Boolean = false, - separator: String = ".", + separator: String = FLATTEN_DEFAULT_SEPARATOR, ): DataFrame = flatten(keepParentNameForColumns, separator) { columns.toColumnSet() } public fun DataFrame.flatten( vararg columns: ColumnReference, keepParentNameForColumns: Boolean = false, - separator: String = ".", + separator: String = FLATTEN_DEFAULT_SEPARATOR, ): DataFrame = flatten(keepParentNameForColumns, separator) { columns.toColumnSet() } public fun DataFrame.flatten( vararg columns: KProperty, keepParentNameForColumns: Boolean = false, - separator: String = ".", + separator: String = FLATTEN_DEFAULT_SEPARATOR, ): DataFrame = flatten(keepParentNameForColumns, separator) { columns.toColumnSet() } // endregion diff --git a/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/impl/api/flatten.kt b/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/impl/api/flatten.kt index 25f8f4c415..1d963d6c66 100644 --- a/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/impl/api/flatten.kt +++ b/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/impl/api/flatten.kt @@ -2,6 +2,7 @@ package org.jetbrains.kotlinx.dataframe.impl.api import org.jetbrains.kotlinx.dataframe.ColumnsSelector import org.jetbrains.kotlinx.dataframe.DataFrame +import org.jetbrains.kotlinx.dataframe.api.FLATTEN_DEFAULT_SEPARATOR import org.jetbrains.kotlinx.dataframe.api.asColumnGroup import org.jetbrains.kotlinx.dataframe.api.getColumnsWithPaths import org.jetbrains.kotlinx.dataframe.api.into @@ -15,7 +16,7 @@ import org.jetbrains.kotlinx.dataframe.impl.columns.toColumnSet internal fun DataFrame.flattenImpl( columns: ColumnsSelector, keepParentNameForColumns: Boolean = false, - separator: String = ".", + separator: String = FLATTEN_DEFAULT_SEPARATOR, ): DataFrame { val rootColumns = getColumnsWithPaths { columns.toColumnSet().filter { it.isColumnGroup() }.simplify() diff --git a/core/src/test/kotlin/org/jetbrains/kotlinx/dataframe/api/flatten.kt b/core/src/test/kotlin/org/jetbrains/kotlinx/dataframe/api/flatten.kt index 6dcd4a93d0..aa457c95be 100644 --- a/core/src/test/kotlin/org/jetbrains/kotlinx/dataframe/api/flatten.kt +++ b/core/src/test/kotlin/org/jetbrains/kotlinx/dataframe/api/flatten.kt @@ -98,7 +98,7 @@ class FlattenTests { aggregate .flatten(keepParentNameForColumns = true) - .columnNames() shouldBe listOf("city", "mean.age", "mean.weight", "std.age", "std.weight") + .columnNames() shouldBe listOf("city", "mean_age", "mean_weight", "std_age", "std_weight") aggregate .flatten(keepParentNameForColumns = true, separator = "_happy_separator_") From fbcb8ff02f7716fda43ccc6a115b58ba503e1f9b Mon Sep 17 00:00:00 2001 From: Jolan Rensen Date: Tue, 15 Oct 2024 17:39:56 +0200 Subject: [PATCH 2/2] inlined flatten separator arguments --- .../jetbrains/kotlinx/dataframe/api/flatten.kt | 16 ++++++---------- .../kotlinx/dataframe/impl/api/flatten.kt | 3 +-- 2 files changed, 7 insertions(+), 12 deletions(-) diff --git a/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/flatten.kt b/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/flatten.kt index f0fbe77cde..7a9ede21de 100644 --- a/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/flatten.kt +++ b/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/flatten.kt @@ -9,41 +9,37 @@ import org.jetbrains.kotlinx.dataframe.columns.toColumnSet import org.jetbrains.kotlinx.dataframe.impl.api.flattenImpl import kotlin.reflect.KProperty -public const val FLATTEN_DEFAULT_SEPARATOR: String = "_" - // region DataFrame @Refine @Interpretable("FlattenDefault") -public fun DataFrame.flatten( - keepParentNameForColumns: Boolean = false, - separator: String = FLATTEN_DEFAULT_SEPARATOR, -): DataFrame = flatten(keepParentNameForColumns, separator) { all() } +public fun DataFrame.flatten(keepParentNameForColumns: Boolean = false, separator: String = "_"): DataFrame = + flatten(keepParentNameForColumns, separator) { all() } @Refine @Interpretable("Flatten0") public fun DataFrame.flatten( keepParentNameForColumns: Boolean = false, - separator: String = FLATTEN_DEFAULT_SEPARATOR, + separator: String = "_", columns: ColumnsSelector, ): DataFrame = flattenImpl(columns, keepParentNameForColumns, separator) public fun DataFrame.flatten( vararg columns: String, keepParentNameForColumns: Boolean = false, - separator: String = FLATTEN_DEFAULT_SEPARATOR, + separator: String = "_", ): DataFrame = flatten(keepParentNameForColumns, separator) { columns.toColumnSet() } public fun DataFrame.flatten( vararg columns: ColumnReference, keepParentNameForColumns: Boolean = false, - separator: String = FLATTEN_DEFAULT_SEPARATOR, + separator: String = "_", ): DataFrame = flatten(keepParentNameForColumns, separator) { columns.toColumnSet() } public fun DataFrame.flatten( vararg columns: KProperty, keepParentNameForColumns: Boolean = false, - separator: String = FLATTEN_DEFAULT_SEPARATOR, + separator: String = "_", ): DataFrame = flatten(keepParentNameForColumns, separator) { columns.toColumnSet() } // endregion diff --git a/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/impl/api/flatten.kt b/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/impl/api/flatten.kt index 1d963d6c66..bd692ef2fc 100644 --- a/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/impl/api/flatten.kt +++ b/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/impl/api/flatten.kt @@ -2,7 +2,6 @@ package org.jetbrains.kotlinx.dataframe.impl.api import org.jetbrains.kotlinx.dataframe.ColumnsSelector import org.jetbrains.kotlinx.dataframe.DataFrame -import org.jetbrains.kotlinx.dataframe.api.FLATTEN_DEFAULT_SEPARATOR import org.jetbrains.kotlinx.dataframe.api.asColumnGroup import org.jetbrains.kotlinx.dataframe.api.getColumnsWithPaths import org.jetbrains.kotlinx.dataframe.api.into @@ -16,7 +15,7 @@ import org.jetbrains.kotlinx.dataframe.impl.columns.toColumnSet internal fun DataFrame.flattenImpl( columns: ColumnsSelector, keepParentNameForColumns: Boolean = false, - separator: String = FLATTEN_DEFAULT_SEPARATOR, + separator: String = "_", ): DataFrame { val rootColumns = getColumnsWithPaths { columns.toColumnSet().filter { it.isColumnGroup() }.simplify()