df.groupBy { city }.pivot { name.lastName }.meanFor(separate = true) { age and weight }
Input DataFrame: rowsCount = 7, columnsCount = 5
nameagecityweightisHappy
firstNamelastName
AliceCooper15London54true
BobDylan45Dubai87true
CharlieDaniels20Moscownullfalse
CharlieChaplin40Milannulltrue
BobMarley30Tokyo68true
AliceWolf20null55false
CharlieByrd30Moscow90true

Step 1: GroupBy
citygroup
LondonDataFrame 1 x 5
DubaiDataFrame 1 x 5
MoscowDataFrame 2 x 5
MilanDataFrame 1 x 5
TokyoDataFrame 1 x 5
nullDataFrame 1 x 5

Step 2: PivotGroupBy
cityname
lastName
London{ Cooper: DataFrame [1 x 5], D..., ... }
Dubai{ Cooper: DataFrame [0 x 0], D..., ... }
Moscow{ Cooper: DataFrame [0 x 0], D..., ... }
Milan{ Cooper: DataFrame [0 x 0], D..., ... }
Tokyo{ Cooper: DataFrame [0 x 0], D..., ... }
null{ Cooper: DataFrame [0 x 0], D..., ... }

Output DataFrame: rowsCount = 6, columnsCount = 3
cityageweight
namename
London{ lastName: { Cooper: 15.0 } }{ lastName: { Cooper: 54.0 } }
Dubai{ lastName: { Dylan: 45.0 } }{ lastName: { Dylan: 87.0 } }
Moscow{ lastName: { Daniels: 20.0, Byrd... } }{ lastName: { Daniels: NaN, Byrd:... } }
Milan{ lastName: { Chaplin: 40.0 } }{ lastName: { Chaplin: NaN } }
Tokyo{ lastName: { Marley: 30.0 } }{ lastName: { Marley: 68.0 } }
null{ lastName: { Wolf: 20.0 } }{ lastName: { Wolf: 55.0 } }


df.groupBy { city }.pivot { name.lastName }.mean(separate = true)
Input DataFrame: rowsCount = 7, columnsCount = 5
nameagecityweightisHappy
firstNamelastName
AliceCooper15London54true
BobDylan45Dubai87true
CharlieDaniels20Moscownullfalse
CharlieChaplin40Milannulltrue
BobMarley30Tokyo68true
AliceWolf20null55false
CharlieByrd30Moscow90true

Step 1: GroupBy
citygroup
LondonDataFrame 1 x 5
DubaiDataFrame 1 x 5
MoscowDataFrame 2 x 5
MilanDataFrame 1 x 5
TokyoDataFrame 1 x 5
nullDataFrame 1 x 5

Step 2: PivotGroupBy
cityname
lastName
London{ Cooper: DataFrame [1 x 5], D..., ... }
Dubai{ Cooper: DataFrame [0 x 0], D..., ... }
Moscow{ Cooper: DataFrame [0 x 0], D..., ... }
Milan{ Cooper: DataFrame [0 x 0], D..., ... }
Tokyo{ Cooper: DataFrame [0 x 0], D..., ... }
null{ Cooper: DataFrame [0 x 0], D..., ... }

Output DataFrame: rowsCount = 6, columnsCount = 3
cityageweight
namename
London{ lastName: { Cooper: 15.0 } }{ lastName: { Cooper: 54.0 } }
Dubai{ lastName: { Dylan: 45.0 } }{ lastName: { Dylan: 87.0 } }
Moscow{ lastName: { Daniels: 20.0, Byrd... } }{ lastName: { Daniels: NaN, Byrd:... } }
Milan{ lastName: { Chaplin: 40.0 } }{ lastName: { Chaplin: NaN } }
Tokyo{ lastName: { Marley: 30.0 } }{ lastName: { Marley: 68.0 } }
null{ lastName: { Wolf: 20.0 } }{ lastName: { Wolf: 55.0 } }