@@ -4,13 +4,15 @@ import org.jetbrains.kotlinx.dataframe.AnyFrame
44import org.jetbrains.kotlinx.dataframe.AnyRow
55import org.jetbrains.kotlinx.dataframe.api.cast
66import org.jetbrains.kotlinx.dataframe.api.dataFrameOf
7+ import org.jetbrains.kotlinx.dataframe.api.getColumn
78import org.jetbrains.kotlinx.dataframe.api.group
89import org.jetbrains.kotlinx.dataframe.api.into
910import org.jetbrains.kotlinx.dataframe.api.isColumnGroup
1011import org.jetbrains.kotlinx.dataframe.api.isFrameColumn
1112import org.jetbrains.kotlinx.dataframe.api.isList
1213import org.jetbrains.kotlinx.dataframe.api.isValueColumn
1314import org.jetbrains.kotlinx.dataframe.api.rows
15+ import org.jetbrains.kotlinx.dataframe.size
1416import kotlin.reflect.KType
1517import kotlin.reflect.full.isSubtypeOf
1618import kotlin.reflect.full.withNullability
@@ -31,11 +33,13 @@ internal fun encodeToToonImpl(df: AnyFrame): ToonArray {
3133 val isFlat = df.columns().all { it.isValueColumn() }
3234 if (isFlat) {
3335 val header = df.columnNames()
34- val types = df.columnTypes()
3536
36- val objectArray = df.rows().map { row ->
37- header.indices.map { i ->
38- row[i].toToonPrimitive(types[i])
37+ val (nCol, nRow) = df.size()
38+
39+ val objectArray = (0 .. < nRow).map { rowIndex ->
40+ (0 .. < nCol).map { colIndex ->
41+ val col = df.getColumn(colIndex)
42+ col[rowIndex].toToonPrimitive(col.type())
3943 }
4044 }
4145
0 commit comments