package Ġorg . jetbrains . kotlin x . dataframe . io Ċ Ċ import Ġorg . apache . commons . csv . CSV Format Ċ import Ġorg . apache . commons . csv . CSV Record Ċ import Ġorg . jetbrains . kotlin x . dataframe . Any Frame Ċ import Ġorg . jetbrains . kotlin x . dataframe . Any Row Ċ import Ġorg . jetbrains . kotlin x . dataframe . DataColumn Ċ import Ġorg . jetbrains . kotlin x . dataframe . DataFrame Ċ import Ġorg . jetbrains . kotlin x . dataframe . api . Parser Options Ċ import Ġorg . jetbrains . kotlin x . dataframe . api . forEach Row Ċ import Ġorg . jetbrains . kotlin x . dataframe . api . to DataFrame Ċ import Ġorg . jetbrains . kotlin x . dataframe . api . try Parse Ċ import Ġorg . jetbrains . kotlin x . dataframe . impl . ColumnName Generator Ċ import Ġorg . jetbrains . kotlin x . dataframe . impl . api . Parsers Ċ import Ġorg . jetbrains . kotlin x . dataframe . impl . api . parse Ċ import Ġorg . jetbrains . kotlin x . dataframe . values Ċ import Ġjava . io . BufferedReader Ċ import Ġjava . io . File Ċ import Ġjava . io . FileInputStream Ċ import Ġjava . io . FileWriter Ċ import Ġjava . io . IOException Ċ import Ġjava . io . InputStream Ċ import Ġjava . io . InputStream Reader Ċ import Ġjava . io . Reader Ċ import Ġjava . io . String Reader Ċ import Ġjava . io . String Writer Ċ import Ġjava . math . BigDecimal Ċ import Ġjava . net . URL Ċ import Ġjava . nio . charset . Charset Ċ import Ġjava . time . LocalDate Ċ import Ġjava . time . LocalDateTime Ċ import Ġjava . time . Local Time Ċ import Ġjava . util . zip . GZIP InputStream Ċ import Ġkotlin . reflect . K Class Ċ import Ġkotlin . reflect . full . with Null ability Ċ import Ġkotlin . reflect . type Of Ċ Ċ public Ġenum Ġclass ĠCSV Type ( public Ġval Ġformat : ĠCSV Format ) Ġ{ ĊĠĠĠ ĠDEFAULT ( CSV Format . DEFAULT . with Allow Missing Column Names (). with Ignore Sur rounding Spaces ()), ĊĠĠĠ ĠT DF ( CSV Format . TD F . with Allow Missing Column Names ()) Ċ } Ċ Ċ private Ġval Ġdefault Charset Ġ= ĠChar sets . UTF _ 8 Ċ Ċ internal Ġfun Ġis Compressed ( file Or Url : ĠString ) Ġ= ĠlistOf (" gz ", Ġ" zip "). contains ( file Or Url . split (". "). last ()) Ċ Ċ internal Ġfun Ġis Compressed ( file : ĠFile ) Ġ= ĠlistOf (" gz ", Ġ" zip "). contains ( file . extension ) Ċ Ċ internal Ġfun Ġis Compressed ( url : ĠURL ) Ġ= Ġis Compressed ( url . path ) Ċ Ċ public Ġfun ĠDataFrame . Companion . read Delim Str ( ĊĠĠĠ Ġtext : ĠString , ĊĠĠĠ Ġcol Types : ĠMap < String , ĠCol Type > Ġ= Ġmap Of (), ĊĠĠĠ Ġskip Lines : ĠInt Ġ= Ġ 0 , ĊĠĠĠ Ġread Lines : ĠInt ? Ġ= Ġnull Ċ ): ĠDataFrame < *> Ġ= Ġread Delim ( String Reader ( text ), ĠCSV Type . DEFAULT . format . with Header (), Ġcol Types , Ġskip Lines , Ġread Lines ) Ċ Ċ public Ġfun ĠDataFrame . Companion . read ( ĊĠĠĠ Ġfile Or Url : ĠString , ĊĠĠĠ Ġdelimiter : ĠChar , ĊĠĠĠ Ġheaders : ĠList < String > Ġ= ĠlistOf (), ĊĠĠĠ Ġcol Types : ĠMap < String , ĠCol Type > Ġ= Ġmap Of (), ĊĠĠĠ Ġskip Lines : ĠInt Ġ= Ġ 0 , ĊĠĠĠ Ġread Lines : ĠInt ? Ġ= Ġnull , ĊĠĠĠ Ġduplicate : ĠBoolean Ġ= Ġtrue , ĊĠĠĠ Ġcharset : ĠCharset Ġ= ĠChar sets . UTF _ 8 Ċ ): ĠDataFrame < *> Ġ= ĊĠĠĠ Ġcatch HttpResponse ( as URL ( file Or Url )) Ġ{ ĊĠĠĠĠĠĠĠ Ġread Delim ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit , Ġdelimiter , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheaders , Ġis Compressed ( file Or Url ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget CSV Type ( file Or Url ), Ġcol Types , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġskip Lines , Ġread Lines , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġduplicate , Ġcharset ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ Ċ public Ġfun ĠDataFrame . Companion . read CSV ( ĊĠĠĠ Ġfile Or Url : ĠString , ĊĠĠĠ Ġdelimiter : ĠChar Ġ= Ġ', ', ĊĠĠĠ Ġheaders : ĠList < String > Ġ= ĠlistOf (), ĊĠĠĠ Ġcol Types : ĠMap < String , ĠCol Type > Ġ= Ġmap Of (), ĊĠĠĠ Ġskip Lines : ĠInt Ġ= Ġ 0 , ĊĠĠĠ Ġread Lines : ĠInt ? Ġ= Ġnull , ĊĠĠĠ Ġduplicate : ĠBoolean Ġ= Ġtrue , ĊĠĠĠ Ġcharset : ĠCharset Ġ= ĠChar sets . UTF _ 8 , ĊĠĠĠ Ġparser Options : ĠParser Options ? Ġ= Ġnull , Ċ ): ĠDataFrame < *> Ġ= ĊĠĠĠ Ġcatch HttpResponse ( as URL ( file Or Url )) Ġ{ ĊĠĠĠĠĠĠĠ Ġread Delim ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit , Ġdelimiter , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheaders , Ġis Compressed ( file Or Url ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCSV Type . DEFAULT , Ġcol Types , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġskip Lines , Ġread Lines , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġduplicate , Ġcharset , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparser Options ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ Ċ public Ġfun ĠDataFrame . Companion . read CSV ( ĊĠĠĠ Ġfile : ĠFile , ĊĠĠĠ Ġdelimiter : ĠChar Ġ= Ġ', ', ĊĠĠĠ Ġheaders : ĠList < String > Ġ= ĠlistOf (), ĊĠĠĠ Ġcol Types : ĠMap < String , ĠCol Type > Ġ= Ġmap Of (), ĊĠĠĠ Ġskip Lines : ĠInt Ġ= Ġ 0 , ĊĠĠĠ Ġread Lines : ĠInt ? Ġ= Ġnull , ĊĠĠĠ Ġduplicate : ĠBoolean Ġ= Ġtrue , ĊĠĠĠ Ġcharset : ĠCharset Ġ= ĠChar sets . UTF _ 8 , ĊĠĠĠ Ġparser Options : ĠParser Options ? Ġ= Ġnull Ċ ): ĠDataFrame < *> Ġ= ĊĠĠĠ Ġread Delim ( ĊĠĠĠĠĠĠĠ ĠFileInputStream ( file ), Ġdelimiter , ĊĠĠĠĠĠĠĠ Ġheaders , Ġis Compressed ( file ), ĊĠĠĠĠĠĠĠ ĠCSV Type . DEFAULT , Ġcol Types , ĊĠĠĠĠĠĠĠ Ġskip Lines , Ġread Lines , ĊĠĠĠĠĠĠĠ Ġduplicate , Ġcharset , ĊĠĠĠĠĠĠĠ Ġparser Options ĊĠĠĠ Ġ) Ċ Ċ public Ġfun ĠDataFrame . Companion . read CSV ( ĊĠĠĠ Ġurl : ĠURL , ĊĠĠĠ Ġdelimiter : ĠChar Ġ= Ġ', ', ĊĠĠĠ Ġheaders : ĠList < String > Ġ= ĠlistOf (), ĊĠĠĠ Ġcol Types : ĠMap < String , ĠCol Type > Ġ= Ġmap Of (), ĊĠĠĠ Ġskip Lines : ĠInt Ġ= Ġ 0 , ĊĠĠĠ Ġread Lines : ĠInt ? Ġ= Ġnull , ĊĠĠĠ Ġduplicate : ĠBoolean Ġ= Ġtrue , ĊĠĠĠ Ġcharset : ĠCharset Ġ= ĠChar sets . UTF _ 8 , ĊĠĠĠ Ġparser Options : ĠParser Options ? Ġ= Ġnull Ċ ): ĠDataFrame < *> Ġ= ĊĠĠĠ Ġread Delim ( ĊĠĠĠĠĠĠĠ Ġurl . open Stream (), Ġdelimiter , ĊĠĠĠĠĠĠĠ Ġheaders , Ġis Compressed ( url ), ĊĠĠĠĠĠĠĠ ĠCSV Type . DEFAULT , Ġcol Types , ĊĠĠĠĠĠĠĠ Ġskip Lines , Ġread Lines , ĊĠĠĠĠĠĠĠ Ġduplicate , Ġcharset , ĊĠĠĠĠĠĠĠ Ġparser Options ĊĠĠĠ Ġ) Ċ Ċ public Ġfun ĠDataFrame . Companion . read T SV ( ĊĠĠĠ Ġfile Or Url : ĠString , ĊĠĠĠ Ġdelimiter : ĠChar Ġ= Ġ'\ t ', ĊĠĠĠ Ġheaders : ĠList < String > Ġ= ĠlistOf (), ĊĠĠĠ Ġcol Types : ĠMap < String , ĠCol Type > Ġ= Ġmap Of (), ĊĠĠĠ Ġskip Lines : ĠInt Ġ= Ġ 0 , ĊĠĠĠ Ġread Lines : ĠInt ? Ġ= Ġnull , ĊĠĠĠ Ġduplicate : ĠBoolean Ġ= Ġtrue , ĊĠĠĠ Ġcharset : ĠCharset Ġ= ĠChar sets . UTF _ 8 , ĊĠĠĠ Ġparser Options : ĠParser Options ? Ġ= Ġnull Ċ ): ĠDataFrame < *> Ġ= ĊĠĠĠ Ġcatch HttpResponse ( as URL ( file Or Url )) Ġ{ ĊĠĠĠĠĠĠĠ Ġread Delim ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit , Ġdelimiter , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheaders , Ġis Compressed ( file Or Url ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCSV Type . TD F , Ġcol Types , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġskip Lines , Ġread Lines , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġduplicate , Ġcharset , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparser Options ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ Ċ public Ġfun ĠDataFrame . Companion . read T SV ( ĊĠĠĠ Ġfile : ĠFile , ĊĠĠĠ Ġdelimiter : ĠChar Ġ= Ġ'\ t ', ĊĠĠĠ Ġheaders : ĠList < String > Ġ= ĠlistOf (), ĊĠĠĠ Ġcol Types : ĠMap < String , ĠCol Type > Ġ= Ġmap Of (), ĊĠĠĠ Ġskip Lines : ĠInt Ġ= Ġ 0 , ĊĠĠĠ Ġread Lines : ĠInt ? Ġ= Ġnull , ĊĠĠĠ Ġduplicate : ĠBoolean Ġ= Ġtrue , ĊĠĠĠ Ġcharset : ĠCharset Ġ= ĠChar sets . UTF _ 8 Ċ ): ĠDataFrame < *> Ġ= ĊĠĠĠ Ġread Delim ( ĊĠĠĠĠĠĠĠ ĠFileInputStream ( file ), Ġdelimiter , ĊĠĠĠĠĠĠĠ Ġheaders , Ġis Compressed ( file ), ĊĠĠĠĠĠĠĠ ĠCSV Type . TD F , Ġcol Types , ĊĠĠĠĠĠĠĠ Ġskip Lines , Ġread Lines , ĊĠĠĠĠĠĠĠ Ġduplicate , Ġcharset ĊĠĠĠ Ġ) Ċ Ċ private Ġfun Ġget CSV Type ( path : ĠString ): ĠCSV Type Ġ= ĊĠĠĠ Ġwhen Ġ( path . substring After Last ('. '). toLowerCase ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġ" csv " Ġ-> ĠCSV Type . DEFAULT ĊĠĠĠĠĠĠĠ Ġ" td f " Ġ-> ĠCSV Type . TD F ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠIOException (" Unknown Ġfile Ġformat ") ĊĠĠĠ Ġ} Ċ Ċ private Ġfun Ġas Stream ( file Or Url : ĠString ) Ġ= Ġ( ĊĠĠĠ Ġif Ġ( is URL ( file Or Url )) Ġ{ ĊĠĠĠĠĠĠĠ ĠURL ( file Or Url ). to URI () ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ ĠFile ( file Or Url ). to URI () ĊĠĠĠ Ġ} ĊĠĠĠ Ġ). to URL (). open Stream () Ċ Ċ private Ġfun Ġas URL ( file Or Url : ĠString ): ĠURL Ġ= Ġ( ĊĠĠĠ Ġif Ġ( is URL ( file Or Url )) Ġ{ ĊĠĠĠĠĠĠĠ ĠURL ( file Or Url ). to URI () ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ ĠFile ( file Or Url ). to URI () ĊĠĠĠ Ġ} ĊĠĠĠ Ġ). to URL () Ċ Ċ private Ġfun Ġget Format ( type : ĠCSV Type , Ġdelimiter : ĠChar , Ġheaders : ĠList < String >, Ġduplicate : ĠBoolean ): ĠCSV Format Ġ= ĊĠĠĠ Ġtype . format . with Delimiter ( delimiter ). with Header (* headers . to Typed Array ()). with Allow Duplicate Header Names ( duplicate ) Ċ Ċ public Ġfun ĠDataFrame . Companion . read Delim ( ĊĠĠĠ Ġin Stream : ĠInputStream , ĊĠĠĠ Ġdelimiter : ĠChar Ġ= Ġ', ', ĊĠĠĠ Ġheaders : ĠList < String > Ġ= ĠlistOf (), ĊĠĠĠ Ġis Compressed : ĠBoolean Ġ= Ġfalse , ĊĠĠĠ Ġcsv Type : ĠCSV Type , ĊĠĠĠ Ġcol Types : ĠMap < String , ĠCol Type > Ġ= Ġmap Of (), ĊĠĠĠ Ġskip Lines : ĠInt Ġ= Ġ 0 , ĊĠĠĠ Ġread Lines : ĠInt ? Ġ= Ġnull , ĊĠĠĠ Ġduplicate : ĠBoolean Ġ= Ġtrue , ĊĠĠĠ Ġcharset : ĠCharset Ġ= Ġdefault Charset , ĊĠĠĠ Ġparser Options : ĠParser Options ? Ġ= Ġnull , Ċ ): ĠAny Frame Ġ= ĊĠĠĠ Ġif Ġ( is Compressed ) Ġ{ ĊĠĠĠĠĠĠĠ ĠInputStreamReader ( GZIP InputStream ( in Stream ), Ġcharset ) ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ ĠBufferedReader ( InputStream Reader ( in Stream , Ġcharset )) ĊĠĠĠ Ġ}. run Ġ{ ĊĠĠĠĠĠĠĠ Ġread Delim ( this , Ġget Format ( csv Type , Ġdelimiter , Ġheaders , Ġduplicate ), Ġcol Types , Ġskip Lines , Ġread Lines , Ġparser Options ) ĊĠĠĠ Ġ} Ċ Ċ internal Ġfun Ġis URL ( file Or Url : ĠString ): ĠBoolean Ġ= ĠlistOf (" http :", Ġ" https :", Ġ" ftp : "). any Ġ{ Ġfile Or Url . startsWith ( it ) Ġ} Ċ Ċ public Ġenum Ġclass ĠCol Type Ġ{ ĊĠĠĠ ĠInt , ĊĠĠĠ ĠLong , ĊĠĠĠ ĠDouble , ĊĠĠĠ ĠBoolean , ĊĠĠĠ ĠBigDecimal , ĊĠĠĠ ĠLocalDate , ĊĠĠĠ ĠLocal Time , ĊĠĠĠ ĠLocalDateTime , ĊĠĠĠ ĠString , Ċ } Ċ Ċ public Ġfun ĠCol Type . to Type (): ĠK Class < out ĠAny > Ġ= Ġwhen Ġ( this ) Ġ{ ĊĠĠĠ ĠCol Type . Int Ġ-> ĠInt :: class ĊĠĠĠ ĠCol Type . Long Ġ-> ĠLong :: class ĊĠĠĠ ĠCol Type . Double Ġ-> ĠDouble :: class ĊĠĠĠ ĠCol Type . Boolean Ġ-> ĠBoolean :: class ĊĠĠĠ ĠCol Type . BigDecimal Ġ-> ĠBigDecimal :: class ĊĠĠĠ ĠCol Type . LocalDate Ġ-> ĠLocalDate :: class ĊĠĠĠ ĠCol Type . Local Time Ġ-> ĠLocal Time :: class ĊĠĠĠ ĠCol Type . LocalDateTime Ġ-> ĠLocalDateTime :: class ĊĠĠĠ ĠCol Type . String Ġ-> ĠString :: class Ċ } Ċ Ċ public Ġfun ĠDataFrame . Companion . read Delim ( ĊĠĠĠ Ġreader : ĠReader , ĊĠĠĠ Ġformat : ĠCSV Format Ġ= ĠCSV Format . DEFAULT . with Header (), ĊĠĠĠ Ġcol Types : ĠMap < String , ĠCol Type > Ġ= Ġmap Of (), ĊĠĠĠ Ġskip Lines : ĠInt Ġ= Ġ 0 , ĊĠĠĠ Ġread Lines : ĠInt ? Ġ= Ġnull , ĊĠĠĠ Ġparser Options : ĠParser Options ? Ġ= Ġnull Ċ ): ĠAny Frame Ġ{ ĊĠĠĠ Ġvar Ġreader Ġ= Ġreader ĊĠĠĠ Ġif Ġ( skip Lines Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreader Ġ= ĠBufferedReader ( reader ) ĊĠĠĠĠĠĠĠ Ġrepeat ( skip Lines ) Ġ{ Ġreader . readLine () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġformat . parse ( reader ). use Ġ{ Ġcsv Parser Ġ-> ĊĠĠĠĠĠĠĠ Ġval Ġrecords Ġ= Ġif Ġ( read Lines Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcsv Parser . records ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequire ( read Lines Ġ>= Ġ 0 ) Ġ{ Ġ"` read Lines ` Ġmust Ġnot Ġbe Ġnegative " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrecords Ġ= ĠArrayList < CSV Record >( read Lines ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġiter Ġ= Ġcsv Parser . iterator () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcount Ġ= Ġread Lines Ġ?: Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( iter . hasNext () Ġ&& Ġ 0 Ġ< Ġcount --) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrecords . add ( iter . next ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrecords ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġcolumn Names Ġ= Ġcsv Parser . header Names . take If Ġ{ Ġit . isNotEmpty () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġ( 1 .. records [ 0 ]. count ()). map Ġ{ Ġindex Ġ-> Ġ" X $ index " Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġgenerator Ġ= ĠColumn Name Generator () ĊĠĠĠĠĠĠĠ Ġval Ġunique Names Ġ= Ġcolumn Names . map Ġ{ Ġgenerator . add Unique ( it ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġcols Ġ= Ġunique Names . map Indexed Ġ{ Ġcol Index , Ġcol Name Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdefault Col Type Ġ= Ġcol Types [" . default "] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcol Type Ġ= Ġcol Types [ col Name ] Ġ?: Ġdefault Col Type ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġhas Null s Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalues Ġ= Ġrecords . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ col Index ]. if Empty Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhas Null s Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcolumn Ġ= ĠData Column . create Value Column ( col Name , Ġvalues , ĠtypeOf < String >(). with Null ability ( has Null s )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( col Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull Ġ-> Ġcolumn . try Parse ( parser Options ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparser Ġ= ĠPar sers [ col Type . to Type ()] !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolumn . parse ( parser , Ġparser Options ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġcols . to DataFrame () ĊĠĠĠ Ġ} Ċ } Ċ Ċ public Ġfun ĠAny Frame . write CSV ( file : ĠFile , Ġformat : ĠCSV Format Ġ= ĠCSV Format . DEFAULT . with Header ()): ĠUnit Ġ= ĊĠĠĠ Ġwrite CSV ( FileWriter ( file ), Ġformat ) Ċ Ċ public Ġfun ĠAny Frame . write CSV ( path : ĠString , Ġformat : ĠCSV Format Ġ= ĠCSV Format . DEFAULT . with Header ()): ĠUnit Ġ= ĊĠĠĠ Ġwrite CSV ( FileWriter ( path ), Ġformat ) Ċ Ċ public Ġfun ĠAny Frame . write CSV ( writer : ĠAppend able , Ġformat : ĠCSV Format Ġ= ĠCSV Format . DEFAULT . with Header ()): ĠUnit Ġ= ĊĠĠĠ Ġformat . print ( writer ). use Ġ{ Ġprinter Ġ-> ĊĠĠĠĠĠĠĠ Ġprinter . print Record ( column Names ()) ĊĠĠĠĠĠĠĠ ĠforEach Row Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalues Ġ= Ġit . values . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠAny Row Ġ-> Ġit . toJson () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠAny Frame Ġ-> Ġit . toJson () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprinter . print Record ( values ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ public Ġfun ĠAny Frame . to Csv ( format : ĠCSV Format Ġ= ĠCSV Format . DEFAULT . with Header ()): ĠString Ġ= ĊĠĠĠ ĠString Writer (). use Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . write CSV ( it , Ġformat ) ĊĠĠĠĠĠĠĠ Ġit ĊĠĠĠ Ġ}. toString () Ċ