diff --git a/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/typeConversions.kt b/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/typeConversions.kt index cde30fd302..1405bdd05c 100644 --- a/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/typeConversions.kt +++ b/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/typeConversions.kt @@ -20,8 +20,11 @@ import org.jetbrains.kotlinx.dataframe.columns.ColumnSet import org.jetbrains.kotlinx.dataframe.columns.FrameColumn import org.jetbrains.kotlinx.dataframe.columns.SingleColumn import org.jetbrains.kotlinx.dataframe.columns.ValueColumn +import org.jetbrains.kotlinx.dataframe.documentation.DocumentationUrls +import org.jetbrains.kotlinx.dataframe.impl.DataRowImpl import org.jetbrains.kotlinx.dataframe.impl.GroupByImpl import org.jetbrains.kotlinx.dataframe.impl.anyNull +import org.jetbrains.kotlinx.dataframe.impl.api.convertToDataFrame import org.jetbrains.kotlinx.dataframe.impl.asList import org.jetbrains.kotlinx.dataframe.impl.columnName import org.jetbrains.kotlinx.dataframe.impl.columns.ColumnAccessorImpl @@ -403,6 +406,11 @@ public fun DataRow.toDataFrame(): DataFrame = owner[index..index] public fun AnyRow.toMap(): Map = df().columns().associate { it.name() to it[index] } +public fun Map.toDataRow(): DataRow<*> { + val df = mapValues { listOf(it.value) }.toDataFrame() + return DataRowImpl(0, df) +} + // endregion // region Array diff --git a/core/src/test/kotlin/org/jetbrains/kotlinx/dataframe/testSets/person/DataRowTests.kt b/core/src/test/kotlin/org/jetbrains/kotlinx/dataframe/testSets/person/DataRowTests.kt index 6c2a2407e8..2e465d36ae 100644 --- a/core/src/test/kotlin/org/jetbrains/kotlinx/dataframe/testSets/person/DataRowTests.kt +++ b/core/src/test/kotlin/org/jetbrains/kotlinx/dataframe/testSets/person/DataRowTests.kt @@ -21,6 +21,7 @@ import org.jetbrains.kotlinx.dataframe.api.relative import org.jetbrains.kotlinx.dataframe.api.rowMean import org.jetbrains.kotlinx.dataframe.api.rowStd import org.jetbrains.kotlinx.dataframe.api.rowSum +import org.jetbrains.kotlinx.dataframe.api.toDataRow import org.jetbrains.kotlinx.dataframe.api.toDouble import org.jetbrains.kotlinx.dataframe.api.transposeTo import org.jetbrains.kotlinx.dataframe.api.update @@ -118,4 +119,12 @@ class DataRowTests : BaseTest() { typed[1].relative(-2..2) shouldBe typed[0..3] typed[1].relative(listOf(2, -1, -3, 0)) shouldBe typed[3, 0, 1] } + + @Test + fun toDataRow() { + val map = mapOf("a" to 1, "b" to true) + val row = map.toDataRow() + row["a"] shouldBe 1 + row["b"] shouldBe true + } }