package Ġorg . jetbrains . kotlin x . dataframe . api Ċ Ċ import Ġorg . jetbrains . kotlin x . dataframe . Any Base Column Ċ import Ġorg . jetbrains . kotlin x . dataframe . Any Col Ċ import Ġorg . jetbrains . kotlin x . dataframe . Any Frame Ċ import Ġorg . jetbrains . kotlin x . dataframe . DataColumn Ċ import Ġorg . jetbrains . kotlin x . dataframe . DataFrame Ċ import Ġorg . jetbrains . kotlin x . dataframe . DataRow Ċ import Ġorg . jetbrains . kotlin x . dataframe . columns . Column Kind Ċ import Ġorg . jetbrains . kotlin x . dataframe . columns . Column Path Ċ import Ġorg . jetbrains . kotlin x . dataframe . impl . ColumnName Generator Ċ import Ġorg . jetbrains . kotlin x . dataframe . impl . api . create DataFrame Impl Ċ import Ġorg . jetbrains . kotlin x . dataframe . impl . api . map NotNull Values Ċ import Ġorg . jetbrains . kotlin x . dataframe . impl . asList Ċ import Ġorg . jetbrains . kotlin x . dataframe . impl . columnName Ċ import Ġorg . jetbrains . kotlin x . dataframe . impl . columns . guess ColumnType Ċ import Ġorg . jetbrains . kotlin x . dataframe . index Ċ import Ġorg . jetbrains . kotlin x . dataframe . io . read Ċ import Ġorg . jetbrains . kotlin x . dataframe . type Class Ċ import Ġjava . io . File Ċ import Ġjava . net . URL Ċ import Ġkotlin . reflect . K Class Ċ import Ġkotlin . reflect . K Property Ċ Ċ // Ġregion Ġread ĠDataFrame Ġfrom Ġobjects Ċ Ċ public Ġinline Ġfun Ġ< re ified ĠT > ĠIterable < T >. to DataFrame (): ĠDataFrame < T > Ġ= Ġto DataFrame Ġ{ ĊĠĠĠ Ġproperties ( depth Ġ= Ġ 1 ) Ċ } Ċ Ċ public Ġinline Ġfun Ġ< re ified ĠT > ĠIterable < T >. to DataFrame ( no inline Ġbody : ĠCreate DataFrame Dsl < T >. () Ġ-> ĠUnit ): ĠDataFrame < T > Ġ= Ġcreate DataFrame Impl ( T :: class , Ġbody ) Ċ Ċ public Ġinline Ġfun Ġ< re ified ĠT > ĠIterable < T >. to DataFrame ( var arg Ġprops : ĠK Property <* >, Ġdepth : ĠInt Ġ= Ġ 1 ): ĠDataFrame < T > Ġ= ĊĠĠĠ Ġto DataFrame Ġ{ ĊĠĠĠĠĠĠĠ Ġproperties ( roots Ġ= Ġprops , Ġdepth Ġ= Ġdepth ) ĊĠĠĠ Ġ} Ċ Ċ public Ġinline Ġfun Ġ< re ified ĠT > ĠData Column < T >. read (): ĠAny Col Ġ= Ġwhen Ġ( kind ()) Ġ{ ĊĠĠĠ ĠColumn Kind . Group , ĠColumn Kind . Frame Ġ-> Ġthis ĊĠĠĠ Ġelse Ġ-> Ġwhen Ġ{ ĊĠĠĠĠĠĠĠ Ġis Primitive () Ġ-> Ġthis ĊĠĠĠĠĠĠĠ Ġtype Class Ġ== ĠFile :: class Ġ-> Ġcast < File ?> (). map NotNull Values Ġ{ ĠDataFrame . read ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġtype Class Ġ== ĠURL :: class Ġ-> Ġcast < URL ?> (). map NotNull Values Ġ{ ĠDataFrame . read ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġvalues (). to DataFrame (). as Column Group ( name ()). as DataColumn () ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Jvm Name (" to DataFrame T ") Ċ public Ġfun Ġ< T > ĠIterable < DataRow < T >> . to DataFrame (): ĠDataFrame < T > Ġ{ ĊĠĠĠ Ġvar Ġunique Df : ĠDataFrame < T >? Ġ= Ġnull ĊĠĠĠ Ġfor Ġ( row Ġin Ġthis ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( unique Df Ġ== Ġnull ) Ġunique Df Ġ= Ġrow . df () ĊĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( unique Df Ġ!== Ġrow . df ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġunique Df Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġif Ġ( unique Df Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpermutation Ġ= Ġmap Ġ{ Ġit . index Ġ} ĊĠĠĠĠĠĠĠ Ġunique Df [ permutation ] ĊĠĠĠ Ġ} Ġelse Ġmap Ġ{ Ġit . to DataFrame () Ġ}. concat () Ċ } Ċ Ċ @ Jvm Name (" to DataFrame Any Column ") Ċ public Ġfun ĠIterable < Any Base Column >. to DataFrame (): ĠAny Frame Ġ= Ġdata Frame Of ( this ) Ċ Ċ @ Jvm Name (" to DataFrame Pair Column Path Any Col ") Ċ public Ġfun Ġ< T > ĠIterable < Pair < Column Path , ĠAny Base Column >> . to DataFrame From Pairs (): ĠDataFrame < T > Ġ{ ĊĠĠĠ Ġval Ġname Generator Ġ= ĠColumn Name Generator () ĊĠĠĠ Ġval Ġcolumn Names Ġ= Ġmutable ListOf < String >() ĊĠĠĠ Ġval Ġcolumn Groups Ġ= Ġmutable ListOf < Mutable List < Pair < Column Path , ĠAny Base Column >> ?> () ĊĠĠĠ Ġval Ġcolumns Ġ= Ġmutable ListOf < Any Base Column ?> () ĊĠĠĠ Ġval Ġcolumn Indices Ġ= Ġmutable Map Of < String , ĠInt >() ĊĠĠĠ Ġval Ġcolumn GroupName Ġ= Ġmutable Map Of < String , ĠString >() ĊĊĠĠĠ ĠforEach Ġ{ Ġ( path , Ġcol ) Ġ-> ĊĠĠĠĠĠĠĠ Ġwhen Ġ( path . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġpath [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġunique Name Ġ= Ġname Generator . add Unique ( name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġindex Ġ= Ġcolumns . size ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolumn Names . add ( unique Name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolumn Groups . add ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolumns . add ( col . rename ( unique Name )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolumn Indices [ unique Name ] Ġ= Ġindex ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġpath [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġunique Name Ġ= Ġcolumn GroupName . get Or Put ( name ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Generator . add Unique ( name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġindex Ġ= Ġcolumn Indices . get Or Put ( unique Name ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolumn Names . add ( unique Name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolumn Groups . add ( mutable ListOf ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolumns . add ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolumns . size Ġ- Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġcolumn Groups [ index ] !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist . add ( path . drop ( 1 ) Ġto Ġcol ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġcolumns . indices . forEach Ġ{ Ġindex Ġ-> ĊĠĠĠĠĠĠĠ Ġval Ġgroup Ġ= Ġcolumn Groups [ index ] ĊĠĠĠĠĠĠĠ Ġif Ġ( group Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnested Df Ġ= Ġgroup . to DataFrame From Pairs < Unit >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcol Ġ= ĠData Column . create Column Group ( column Names [ index ], Ġnested Df ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert ( columns [ index ] Ġ== Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolumns [ index ] Ġ= Ġcol ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġassert ( columns [ index ] Ġ!= Ġnull ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġcolumns . map Ġ{ Ġit !! Ġ}. to DataFrame (). cast () Ċ } Ċ Ċ @ Jvm Name (" to DataFrame Column Path Any Nullable ") Ċ public Ġfun ĠIterable < Pair < Column Path , ĠIterable < Any ? >> >. to DataFrame From Pairs (): ĠAny Frame Ġ{ ĊĠĠĠ Ġreturn Ġmap Ġ{ Ġit . first Ġto Ġguess ColumnType ( it . first . last (), Ġit . second . asList ()) Ġ}. to DataFrame From Pairs < Unit >() Ċ } Ċ Ċ public Ġfun ĠIterable < Pair < String , ĠIterable < Any ? >> >. to DataFrame From Pairs (): ĠAny Frame Ġ{ ĊĠĠĠ Ġreturn Ġmap Ġ{ ĠColumn Path ( it . first ) Ġto Ġguess ColumnType ( it . first , Ġit . second . asList ()) Ġ}. to DataFrame From Pairs < Unit >() Ċ } Ċ Ċ public Ġinterface ĠTra verse Properties Dsl Ġ{ ĊĊĠĠĠ Ġpublic Ġfun Ġexclude ( var arg Ġproperties : ĠK Property <* >) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSkip Ġinstances Ġof Ġgiven Ġ[ classes ] Ġfrom Ġtransformation Ġinto ĠColumn Groups Ġand ĠFrame Columns Ġand Ġstore Ġthem Ġin ĠValue Column ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġpreserve ( var arg Ġclasses : ĠK Class <* >) Ċ } Ċ Ċ public Ġinline Ġfun Ġ< re ified ĠT > ĠTra verse Properties Dsl . preserve (): ĠUnit Ġ= Ġpreserve ( T :: class ) Ċ Ċ public Ġabstract Ġclass ĠCreate DataFrame Dsl < T >( public Ġval Ġsource : ĠIterable < T >) Ġ{ ĊĊĠĠĠ Ġpublic Ġabstract Ġfun Ġadd ( column : ĠAny Base Column , Ġpath : ĠColumn Path ? Ġ= Ġnull ) ĊĊĠĠĠ Ġpublic Ġin fix Ġfun ĠAny Base Column . into ( name : ĠString ): ĠUnit Ġ= Ġadd ( this , Ġpath Of ( name )) ĊĊĠĠĠ Ġpublic Ġin fix Ġfun ĠAny Base Column . into ( path : ĠColumn Path ): ĠUnit Ġ= Ġadd ( this , Ġpath ) ĊĊĠĠĠ Ġpublic Ġabstract Ġfun Ġproperties ( ĊĠĠĠĠĠĠĠ Ġvar arg Ġroots : ĠK Property <* >, ĊĠĠĠĠĠĠĠ Ġdepth : ĠInt Ġ= Ġ 1 , ĊĠĠĠĠĠĠĠ Ġbody : Ġ( Tra verse Properties Dsl . () Ġ-> ĠUnit )? Ġ= Ġnull ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġpublic Ġinline Ġfun Ġ< re ified ĠR > Ġexpr ( no inline Ġexpression : Ġ( T ) Ġ-> ĠR ): ĠData Column < R > Ġ= ĊĠĠĠĠĠĠĠ Ġsource . map Ġ{ Ġexpression ( it ) Ġ}. to Column () ĊĊĠĠĠ Ġpublic Ġinline Ġfun Ġ< re ified ĠR > Ġadd ( name : ĠString , Ġno inline Ġexpression : Ġ( T ) Ġ-> ĠR ): ĠUnit Ġ= ĊĠĠĠĠĠĠĠ Ġadd ( source . map Ġ{ Ġexpression ( it ) Ġ}. to Column ( name , ĠIn fer . Null s )) ĊĊĠĠĠ Ġpublic Ġinline Ġin fix Ġfun Ġ< re ified ĠR > ĠString . from ( no inline Ġexpression : Ġ( T ) Ġ-> ĠR ): ĠUnit Ġ= ĊĠĠĠĠĠĠĠ Ġadd ( this , Ġexpression ) ĊĊĠĠĠ Ġpublic Ġinline Ġin fix Ġfun Ġ< re ified ĠR > ĠK Property < R >. from ( no inline Ġexpression : Ġ( T ) Ġ-> ĠR ): ĠUnit Ġ= ĊĠĠĠĠĠĠĠ Ġadd ( columnName , Ġexpression ) ĊĊĠĠĠ Ġpublic Ġinline Ġin fix Ġfun Ġ< re ified ĠR > ĠK Property < R >. from ( infer Type : ĠIn fer Type < T , ĠR >): ĠUnit Ġ= ĊĠĠĠĠĠĠĠ Ġadd ( DataColumn . create WithType Inference ( columnName , Ġsource . map Ġ{ Ġinfer Type . expression ( it ) Ġ})) ĊĊĠĠĠ Ġpublic Ġdata Ġclass ĠIn fer Type < T , ĠR >( val Ġexpression : Ġ( T ) Ġ-> ĠR ) ĊĊĠĠĠ Ġpublic Ġinline Ġfun Ġ< re ified ĠR > Ġinfer Type ( no inline Ġexpression : Ġ( T ) Ġ-> ĠR ): ĠIn fer Type < T , ĠR > Ġ= ĠIn fer Type ( expression ) ĊĊĠĠĠ Ġpublic Ġabstract Ġoperator Ġfun ĠString . invoke ( builder : ĠCreate DataFrame Dsl < T >. () Ġ-> ĠUnit ) Ċ } Ċ Ċ // Ġend region Ċ Ċ // Ġregion ĠCreate ĠDataFrame Ġfrom ĠMap Ċ Ċ public Ġfun ĠMap < String , ĠIterable < Any ? >> . to DataFrame (): ĠAny Frame Ġ{ ĊĠĠĠ Ġreturn Ġmap Ġ{ ĠData Column . create WithType Inference ( it . key , Ġit . value . asList ()) Ġ}. to DataFrame () Ċ } Ċ Ċ @ Jvm Name (" to DataFrame Column Path Any Nullable ") Ċ public Ġfun ĠMap < Column Path , ĠIterable < Any ? >> . to DataFrame (): ĠAny Frame Ġ{ ĊĠĠĠ Ġreturn Ġmap Ġ{ Ġit . key Ġto ĠData Column . create WithType Inference ( it . key . last (), Ġit . value . asList ()) Ġ}. to DataFrame From Pairs < Unit >() Ċ } Ċ Ċ // Ġend region Ċ