| 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.math.max | |
| fun box(): String { | |
| val size = 4 | |
| val data = dataFrameOf( | |
| "a" to List(size) { it.toString() }, | |
| "b" to List(size) { | |
| dataFrameOf("c" to columnOf(2)).duplicateRows(max(1, it)) | |
| } | |
| ) | |
| // compileTimeSchema is not accurate for DataColumn<DataFrame<>?> | |
| data.update { b }.with { df -> df.takeIf { df.rowsCount() % 2 == 0 } }.let { df -> | |
| val col: DataColumn<Int>? = df[0].b?.c | |
| } | |
| data.update { b }.where { it.rowsCount() / 2 == 0 }.with { null }.let { df -> | |
| val col: DataColumn<Int>? = df[0].b?.c | |
| } | |
| val filler = data.b[0] | |
| data | |
| .update { b }.where { it.rowsCount() / 2 == 0 }.with { null } | |
| .fillNulls { b }.with { filler } | |
| .let { df -> | |
| val col: DataColumn<Int> = df[0].b.c | |
| df.compareSchemas(strict = true) | |
| } | |
| return "OK" | |
| } |