| import org.jetbrains.kotlinx.dataframe.* | |
| import org.jetbrains.kotlinx.dataframe.annotations.* | |
| import org.jetbrains.kotlinx.dataframe.api.* | |
| import org.jetbrains.kotlinx.dataframe.io.* | |
| import kotlin.reflect.typeOf | |
| fun box(): String { | |
| val nullableColumnDf = dataFrameOf( | |
| "a" to columnOf(1, 2, null, 3), | |
| "b" to columnOf("a", "a", "b", "b") | |
| ) | |
| nullableColumnDf.implode { a }.let { | |
| val schema = it.compileTimeSchema() | |
| assert(schema.column("a").type == typeOf<List<Int?>>()) | |
| val col: DataColumn<List<Int?>> = it.a | |
| } | |
| nullableColumnDf.implode(dropNA = true) { a }.let { | |
| val col: DataColumn<List<Int>> = it.a | |
| } | |
| val columnGroupDf = dataFrameOf( | |
| "a" to columnOf( | |
| "a1" to columnOf(1, 2, null, 3), | |
| "a2" to columnOf(1, 2, null, 3), | |
| ), | |
| "b" to columnOf("a", "a", "b", "b") | |
| ) | |
| columnGroupDf.implode { a }.let { | |
| // FrameColumn | |
| val col: DataColumn<Int?> = it.a[0].a1 | |
| val col1: DataColumn<Int?> = it.a[0].a2 | |
| } | |
| val df = dataFrameOf( | |
| "a" to columnOf(1, 2, 3, 4), | |
| "b" to columnOf("a", "b", "c", "d"), | |
| "c" to columnOf("a", "b", "c", null), | |
| ) | |
| df.implode(dropNA = true).let { | |
| val l1: List<Int> = it.a | |
| val l2: List<String> = it.b | |
| val l3: List<String> = it.c | |
| } | |
| df.implode().let { | |
| val l1: List<Int> = it.a | |
| val l2: List<String> = it.b | |
| val l3: List<String?> = it.c | |
| } | |
| val frameColDf = dataFrameOf( | |
| "frameCol" to columnOf(dataFrameOf("a" to columnOf(1, 2, 3))), | |
| "col" to columnOf(1), | |
| ) | |
| frameColDf.implode { frameCol }.let { | |
| val schema = it.compileTimeSchema() | |
| assert(schema.column("frameCol").type == typeOf<List<DataFrame<*>>>()) | |
| } | |
| return "OK" | |
| } |