DataFrame 1.0 Help

convert

Returns DataFrame with changed values in some columns. Allows changing column types.

convert { columnsSelector } .with { rowExpression } | .asFrame { frameExpression } | .perRowCol { rowColExpression } | to<Type>() | to { colExpression } rowExpression = DataRow.(OldValue) -> NewValue rowColExpression = (DataRow, DataColumn) -> NewValue colExpression = DataFrame.(DataColumn) -> DataColumn frameExpression: DataFrame.(DataFrame) -> DataFrame

Related operations: Update / convert values, convertTo

See column selectors for how to select the columns for this operation and row expressions for how to provide new values.

df.convert { age }.with { it.toDouble() } df.convert { colsAtAnyDepth().colsOf<String>() }.with { it.toCharArray().toList() }
df.weight.convertTo<Float?>() df.age.convertToDouble()

ColumnGroup can be converted using DataFrame API, for example:

df.convert { name }.asFrame { it.add("fullName") { "$firstName $lastName" } }

Similar to replace with operation, columns can be converted in a compiler-plugin-friendly fashion whenever you need to perform an operation on the entire column without changing its name. For example, parallel reading.

df.convert { name }.asColumn { col -> col.toList().parallelStream().map { it.toString() }.collect(Collectors.toList()).toColumn() }

df.convert {}.to<>() and col.convertTo<>() support automatic type conversions between the following types:

  • String, Char (uses parse to convert from String to other types)

  • Boolean

  • Byte

  • Short

  • Int (and Char)

  • Long

  • Float

  • Double (See parsing doubles for String to Double conversion)

  • BigDecimal (java.math)

  • BigInteger (java.math)

  • LocalDateTime (kotlinx.datetime and java.time)

  • LocalDate (kotlinx.datetime and java.time)

  • LocalTime (kotlinx.datetime and java.time)

  • Instant (kotlinx.datetime, kotlin.time, and java.time)

  • Duration (kotlin.time, and java.time, to/from Long, Int, String, and each other)

  • DateTimeComponents (kotlinx.datetime, to any other kotlinx-datetime/java.time type, Instant, or Long)

  • URL (java.net, to IMG or IFRAME)

  • enum classes (by name)

If you miss a type, or conversion, please let us know by creating a GitHub issue.

df.convert { age }.to<Double>() df.convert { colsOf<Number>() }.to<String>() df.convert { name.firstName and name.lastName }.asColumn { col -> col.map { it.length } } df.convert { weight }.toFloat()

Notice the toFloat() call in the example above. This is a shortcut for to<Float>(). DataFrame has a handful of shortcuts like these

ParserOptions:

It is allowed to pass ParserOptions to conversion functions. This will only be used for String/Char conversions. See parse for more details.

For example:

// String -> Double? conversion stringDf.convert { value }.to<Double?>( parserOptions = ParserOptions(locale = Locale.GERMAN, nullStrings = setOf("-")), ) // String -> LocalDate conversion stringDf.convert { date }.to<LocalDate>( parserOptions = ParserOptions( dateTime = DateTimeParserOptions.Kotlin.withFormat(LocalDate.Formats.ISO), ), ) // shortcut for String -> LocalDate conversion stringDf.convert { date }.toLocalDate(LocalDate.Formats.ISO)

Automatic conversion from String to enum classes is also supported:

enum class Direction { NORTH, SOUTH, WEST, EAST }
dataFrameOf("direction")("NORTH", "WEST") .convert("direction").to<Direction>()

And finally, Value classes can be used with convert too. Both as conversion source and target:

@JvmInline value class IntClass(val value: Int)
dataFrameOf("value")("1", "2") // note that values are strings; conversion is done automatically .convert("value").to<IntClass>()
05 May 2026