df.pivotMatches { city }
Input DataFrame: rowsCount = 7, columnsCount = 5
nameagecityweightisHappy
firstNamelastName
AliceCooper15London54true
BobDylan45Dubai87true
CharlieDaniels20Moscownullfalse
CharlieChaplin40Milannulltrue
BobMarley30Tokyo68true
AliceWolf20null55false
CharlieByrd30Moscow90true

Output DataFrame: rowsCount = 7, columnsCount = 5
nameageweightisHappycity
firstNamelastNameLondonDubaiMoscowMilanTokyonull
AliceCooper1554truetruefalsefalsefalsefalsefalse
BobDylan4587truefalsetruefalsefalsefalsefalse
CharlieDaniels20nullfalsefalsefalsetruefalsefalsefalse
CharlieChaplin40nulltruefalsefalsefalsetruefalsefalse
BobMarley3068truefalsefalsefalsefalsetruefalse
AliceWolf2055falsefalsefalsefalsefalsefalsetrue
CharlieByrd3090truefalsefalsetruefalsefalsefalse


df.pivot { city }.groupByOther().matches()
Input DataFrame: rowsCount = 7, columnsCount = 5
nameagecityweightisHappy
firstNamelastName
AliceCooper15London54true
BobDylan45Dubai87true
CharlieDaniels20Moscownullfalse
CharlieChaplin40Milannulltrue
BobMarley30Tokyo68true
AliceWolf20null55false
CharlieByrd30Moscow90true

Step 1: Pivot
LondonDubaiMoscowMilanTokyonull
DataFrame 1 x 5DataFrame 1 x 5DataFrame 2 x 5DataFrame 1 x 5DataFrame 1 x 5DataFrame 1 x 5

Step 2: PivotGroupBy
nameageweightisHappycity
firstNamelastNameLondonDubaiMoscowMilanTokyonull
AliceCooper1554trueDataFrame 1 x 5
BobDylan4587trueDataFrame 1 x 5
CharlieDaniels20nullfalseDataFrame 1 x 5
CharlieChaplin40nulltrueDataFrame 1 x 5
BobMarley3068trueDataFrame 1 x 5
AliceWolf2055falseDataFrame 1 x 5
CharlieByrd3090trueDataFrame 1 x 5

Output DataFrame: rowsCount = 7, columnsCount = 5
nameageweightisHappycity
firstNamelastNameLondonDubaiMoscowMilanTokyonull
AliceCooper1554truetruefalsefalsefalsefalsefalse
BobDylan4587truefalsetruefalsefalsefalsefalse
CharlieDaniels20nullfalsefalsefalsetruefalsefalsefalse
CharlieChaplin40nulltruefalsefalsefalsetruefalsefalse
BobMarley3068truefalsefalsefalsefalsetruefalse
AliceWolf2055falsefalsefalsefalsefalsefalsetrue
CharlieByrd3090truefalsefalsetruefalsefalsefalse


df.groupBy { name }.pivotMatches { city }
Input DataFrame: rowsCount = 7, columnsCount = 5
nameagecityweightisHappy
firstNamelastName
AliceCooper15London54true
BobDylan45Dubai87true
CharlieDaniels20Moscownullfalse
CharlieChaplin40Milannulltrue
BobMarley30Tokyo68true
AliceWolf20null55false
CharlieByrd30Moscow90true

Step 1: GroupBy
namegroup
firstNamelastName
AliceCooperDataFrame 1 x 5
BobDylanDataFrame 1 x 5
CharlieDanielsDataFrame 1 x 5
CharlieChaplinDataFrame 1 x 5
BobMarleyDataFrame 1 x 5
AliceWolfDataFrame 1 x 5
CharlieByrdDataFrame 1 x 5

Output DataFrame: rowsCount = 7, columnsCount = 2
namecity
firstNamelastNameLondonDubaiMoscowMilanTokyonull
AliceCoopertruefalsefalsefalsefalsefalse
BobDylanfalsetruefalsefalsefalsefalse
CharlieDanielsfalsefalsetruefalsefalsefalse
CharlieChaplinfalsefalsefalsetruefalsefalse
BobMarleyfalsefalsefalsefalsetruefalse
AliceWolffalsefalsefalsefalsefalsetrue
CharlieByrdfalsefalsetruefalsefalsefalse


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

Step 1: GroupBy
namegroup
firstNamelastName
AliceCooperDataFrame 1 x 5
BobDylanDataFrame 1 x 5
CharlieDanielsDataFrame 1 x 5
CharlieChaplinDataFrame 1 x 5
BobMarleyDataFrame 1 x 5
AliceWolfDataFrame 1 x 5
CharlieByrdDataFrame 1 x 5

Step 2: PivotGroupBy
namecity
firstNamelastNameLondonDubaiMoscowMilanTokyonull
AliceCooperDataFrame 1 x 5
BobDylanDataFrame 1 x 5
CharlieDanielsDataFrame 1 x 5
CharlieChaplinDataFrame 1 x 5
BobMarleyDataFrame 1 x 5
AliceWolfDataFrame 1 x 5
CharlieByrdDataFrame 1 x 5

Output DataFrame: rowsCount = 7, columnsCount = 2
namecity
firstNamelastNameLondonDubaiMoscowMilanTokyonull
AliceCoopertruefalsefalsefalsefalsefalse
BobDylanfalsetruefalsefalsefalsefalse
CharlieDanielsfalsefalsetruefalsefalsefalse
CharlieChaplinfalsefalsefalsetruefalsefalse
BobMarleyfalsefalsefalsefalsetruefalse
AliceWolffalsefalsefalsefalsefalsetrue
CharlieByrdfalsefalsetruefalsefalsefalse


df.groupBy { name }.aggregate { pivotMatches { city } }
Input DataFrame: rowsCount = 7, columnsCount = 5
nameagecityweightisHappy
firstNamelastName
AliceCooper15London54true
BobDylan45Dubai87true
CharlieDaniels20Moscownullfalse
CharlieChaplin40Milannulltrue
BobMarley30Tokyo68true
AliceWolf20null55false
CharlieByrd30Moscow90true

Step 1: GroupBy
namegroup
firstNamelastName
AliceCooperDataFrame 1 x 5
BobDylanDataFrame 1 x 5
CharlieDanielsDataFrame 1 x 5
CharlieChaplinDataFrame 1 x 5
BobMarleyDataFrame 1 x 5
AliceWolfDataFrame 1 x 5
CharlieByrdDataFrame 1 x 5

Output DataFrame: rowsCount = 7, columnsCount = 2
namecity
firstNamelastNameLondonDubaiMoscowMilanTokyonull
AliceCoopertruefalsefalsefalsefalsefalse
BobDylanfalsetruefalsefalsefalsefalse
CharlieDanielsfalsefalsetruefalsefalsefalse
CharlieChaplinfalsefalsefalsetruefalsefalse
BobMarleyfalsefalsefalsefalsetruefalse
AliceWolffalsefalsefalsefalsefalsetrue
CharlieByrdfalsefalsetruefalsefalsefalse