blob: 68529b85e0c15251a487909c66b45fc98039d43d [file]
// CHECK_TYPE_WITH_EXACT
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 df = dataFrameOf("name", "age", "city", "weight")(
"Alice", 15, "London", 54,
"Bob", 45, "Dubai", 87,
"Charlie", 20, "Moscow", null,
"Charlie", 40, "Milan", null,
"Bob", 30, "Tokyo", 68,
"Alice", 20, null, 55,
"Charlie", 30, "Moscow", 90,
)
df.groupBy { city.map { it?.uppercase() } }.toDataFrame().let { aggregated ->
aggregated.compareSchemas(strict = true)
}
df.groupBy { city.map { it?.uppercase() ?: "" } named "cityU" }.toDataFrame().let { aggregated ->
aggregated.compareSchemas(strict = true)
}
dataFrameOf("a" to columnOf(42)).convert { a.map { (it * 2).toString() } }.with { it.toInt().toDouble() }.let {
it.compareSchemas(strict = true)
it.print()
}
df.groupBy { city.mapIndexed { _, it -> it?.uppercase() } }.toDataFrame().let { aggregated ->
aggregated.compareSchemas(strict = true)
}
fun String?.myUppercase(): Any? = this?.uppercase()
df.groupBy { city.map(type = typeOf<String?>()) { it?.myUppercase() } }.toDataFrame().let { aggregated ->
checkExactType<Any?>(aggregated[0].city)
aggregated.assert()
}
df.groupBy { city.mapIndexed(type = typeOf<String?>()) { _, it -> it?.myUppercase() } }.toDataFrame().let { aggregated ->
checkExactType<Any?>(aggregated[0].city)
aggregated.assert()
}
return "OK"
}