@@ -98,18 +98,21 @@ private static Type MaxKind(Type a, Type b)
9898 /// <param name="guessRows">number of rows used to guess types</param>
9999 /// <param name="addIndexColumn">add one column with the row index</param>
100100 /// <param name="encoding">The character encoding. Defaults to UTF8 if not specified</param>
101+ /// <param name="renameDuplicatedColumns">If set to true, columns with repeated names are auto-renamed.</param>
102+ /// <param name="cultureInfo">culture info for formatting values</param>
101103 /// <returns>DataFrame</returns>
102104 public static DataFrame LoadCsv ( string filename ,
103105 char separator = ',' , bool header = true ,
104106 string [ ] columnNames = null , Type [ ] dataTypes = null ,
105107 int numRows = - 1 , int guessRows = 10 ,
106- bool addIndexColumn = false , Encoding encoding = null )
108+ bool addIndexColumn = false , Encoding encoding = null ,
109+ bool renameDuplicatedColumns = false , CultureInfo cultureInfo = null )
107110 {
108111 using ( Stream fileStream = new FileStream ( filename , FileMode . Open ) )
109112 {
110113 return LoadCsv ( fileStream ,
111114 separator : separator , header : header , columnNames : columnNames , dataTypes : dataTypes , numberOfRowsToRead : numRows ,
112- guessRows : guessRows , addIndexColumn : addIndexColumn , encoding : encoding ) ;
115+ guessRows : guessRows , addIndexColumn : addIndexColumn , encoding : encoding , renameDuplicatedColumns : renameDuplicatedColumns , cultureInfo : cultureInfo ) ;
113116 }
114117 }
115118
@@ -351,8 +354,14 @@ private static DataFrame ReadCsvLinesIntoDataFrame(WrappedStreamReaderOrStringRe
351354 char separator = ',' , bool header = true ,
352355 string [ ] columnNames = null , Type [ ] dataTypes = null ,
353356 long numberOfRowsToRead = - 1 , int guessRows = 10 , bool addIndexColumn = false ,
354- bool renameDuplicatedColumns = false )
357+ bool renameDuplicatedColumns = false ,
358+ CultureInfo cultureInfo = null )
355359 {
360+ if ( cultureInfo == null )
361+ {
362+ cultureInfo = CultureInfo . CurrentCulture ;
363+ }
364+
356365 if ( dataTypes == null && guessRows <= 0 )
357366 {
358367 throw new ArgumentException ( string . Format ( Strings . ExpectedEitherGuessRowsOrDataTypes , nameof ( guessRows ) , nameof ( dataTypes ) ) ) ;
@@ -452,7 +461,7 @@ private static DataFrame ReadCsvLinesIntoDataFrame(WrappedStreamReaderOrStringRe
452461 }
453462 else
454463 {
455- ret . Append ( fields , inPlace : true ) ;
464+ ret . Append ( fields , inPlace : true , cultureInfo : cultureInfo ) ;
456465 }
457466 ++ rowline ;
458467 }
@@ -508,7 +517,6 @@ public TextReader GetTextReader()
508517 }
509518
510519 }
511-
512520 }
513521
514522 /// <summary>
@@ -522,14 +530,18 @@ public TextReader GetTextReader()
522530 /// <param name="numberOfRowsToRead">number of rows to read not including the header(if present)</param>
523531 /// <param name="guessRows">number of rows used to guess types</param>
524532 /// <param name="addIndexColumn">add one column with the row index</param>
533+ /// <param name="renameDuplicatedColumns">If set to true, columns with repeated names are auto-renamed.</param>
534+ /// <param name="cultureInfo">culture info for formatting values</param>
525535 /// <returns><see cref="DataFrame"/></returns>
526536 public static DataFrame LoadCsvFromString ( string csvString ,
527537 char separator = ',' , bool header = true ,
528538 string [ ] columnNames = null , Type [ ] dataTypes = null ,
529- long numberOfRowsToRead = - 1 , int guessRows = 10 , bool addIndexColumn = false )
539+ long numberOfRowsToRead = - 1 , int guessRows = 10 , bool addIndexColumn = false ,
540+ bool renameDuplicatedColumns = false ,
541+ CultureInfo cultureInfo = null )
530542 {
531543 WrappedStreamReaderOrStringReader wrappedStreamReaderOrStringReader = new WrappedStreamReaderOrStringReader ( csvString ) ;
532- return ReadCsvLinesIntoDataFrame ( wrappedStreamReaderOrStringReader , separator , header , columnNames , dataTypes , numberOfRowsToRead , guessRows , addIndexColumn ) ;
544+ return ReadCsvLinesIntoDataFrame ( wrappedStreamReaderOrStringReader , separator , header , columnNames , dataTypes , numberOfRowsToRead , guessRows , addIndexColumn , renameDuplicatedColumns , cultureInfo ) ;
533545 }
534546
535547 /// <summary>
@@ -545,12 +557,13 @@ public static DataFrame LoadCsvFromString(string csvString,
545557 /// <param name="addIndexColumn">add one column with the row index</param>
546558 /// <param name="encoding">The character encoding. Defaults to UTF8 if not specified</param>
547559 /// <param name="renameDuplicatedColumns">If set to true, columns with repeated names are auto-renamed.</param>
560+ /// <param name="cultureInfo">culture info for formatting values</param>
548561 /// <returns><see cref="DataFrame"/></returns>
549562 public static DataFrame LoadCsv ( Stream csvStream ,
550563 char separator = ',' , bool header = true ,
551564 string [ ] columnNames = null , Type [ ] dataTypes = null ,
552565 long numberOfRowsToRead = - 1 , int guessRows = 10 , bool addIndexColumn = false ,
553- Encoding encoding = null , bool renameDuplicatedColumns = false )
566+ Encoding encoding = null , bool renameDuplicatedColumns = false , CultureInfo cultureInfo = null )
554567 {
555568 if ( ! csvStream . CanSeek )
556569 {
@@ -563,7 +576,7 @@ public static DataFrame LoadCsv(Stream csvStream,
563576 }
564577
565578 WrappedStreamReaderOrStringReader wrappedStreamReaderOrStringReader = new WrappedStreamReaderOrStringReader ( csvStream , encoding ?? Encoding . UTF8 ) ;
566- return ReadCsvLinesIntoDataFrame ( wrappedStreamReaderOrStringReader , separator , header , columnNames , dataTypes , numberOfRowsToRead , guessRows , addIndexColumn , renameDuplicatedColumns ) ;
579+ return ReadCsvLinesIntoDataFrame ( wrappedStreamReaderOrStringReader , separator , header , columnNames , dataTypes , numberOfRowsToRead , guessRows , addIndexColumn , renameDuplicatedColumns , cultureInfo ) ;
567580 }
568581
569582 /// <summary>
0 commit comments