Input DataFrame: rowsCount = 7, columnsCount = 5
nameagecityweightisHappy
firstNamelastName
AliceCooper15London54true
BobDylan45Dubai87true
CharlieDaniels20Moscownullfalse
CharlieChaplin40Milannulltrue
BobMarley30Tokyo68true
AliceWolf20null55false
CharlieByrd30Moscow90true

Step 1: GroupBy
firstNamegroup
AliceDataFrame 2 x 5
BobDataFrame 2 x 5
CharlieDataFrame 3 x 5

Output DataFrame: rowsCount = 3, columnsCount = 4
firstNamemean agecounttotal
citycity
Alice{ London: 15.0, null: 20.0 }{ London: 1, null: 1 }2
Bob{ Dubai: 45.0, Tokyo: 30.0 }{ Dubai: 1, Tokyo: 1 }2
Charlie{ Moscow: 25.0, Milan: 40.0 }{ Moscow: 2, Milan: 1 }3