# associateBy
Discover `associateBy` operation for Kotlin DataFrame.
Discover `associateBy` operation for Kotlin DataFrame.
Discover `associateBy` operation for Kotlin DataFrame.
The `associateBy` function builds a `Map` from a [`DataFrame`](DataFrame.md)
by selecting a key for each row using a [row expression](DataRow.md#row-expressions).
The rows themselves (or values derived from them) become the map values.
If multiple rows produce the same key, only the last row (or value) for that key is kept.
This matches the behavior of Kotlin’s standard
[`kotlin.collections.associateBy`](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.sequences/associate-by.html)
function.
```kotlin
df.associateBy { keySelector }
keySelector: (DataRow) -> Key
```
### Related functions
- [`toMap`](toMap.md) — converts a [`DataFrame`](DataFrame.md) into a `Map` by using column names as keys and their values as map values.
- [`associate`](associate.md) — builds a map from key–value pairs produced by transforming each row.
### Example
```kotlin
df
```
Create a map with names as keys:
```kotlin
df.associateBy { "${name.firstName} ${name.lastName}" }
```
Output:
```text
{
Alice Cooper: { name:{ firstName:Alice, lastName:Cooper }, age:15, city:London, weight:54, isHappy:true },
Bob Dylan: { name:{ firstName:Bob, lastName:Dylan }, age:45, city:Dubai, weight:87, isHappy:true },
Charlie Daniels: { name:{ firstName:Charlie, lastName:Daniels }, age:20, city:Moscow, isHappy:false },
Charlie Chaplin: { name:{ firstName:Charlie, lastName:Chaplin }, age:40, city:Milan, isHappy:true },
Bob Marley: { name:{ firstName:Bob, lastName:Marley }, age:30, city:Tokyo, weight:68, isHappy:true },
Alice Wolf: { name:{ firstName:Alice, lastName:Wolf }, age:20, weight:55, isHappy:false },
Charlie Byrd: { name:{ firstName:Charlie, lastName:Byrd }, age:30, city:Moscow, weight:90, isHappy:true }
}
```