@@ -98,18 +98,21 @@ private static Type MaxKind(Type a, Type b)
98
98
/// <param name="guessRows">number of rows used to guess types</param>
99
99
/// <param name="addIndexColumn">add one column with the row index</param>
100
100
/// <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>
101
103
/// <returns>DataFrame</returns>
102
104
public static DataFrame LoadCsv ( string filename ,
103
105
char separator = ',' , bool header = true ,
104
106
string [ ] columnNames = null , Type [ ] dataTypes = null ,
105
107
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 )
107
110
{
108
111
using ( Stream fileStream = new FileStream ( filename , FileMode . Open ) )
109
112
{
110
113
return LoadCsv ( fileStream ,
111
114
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 ) ;
113
116
}
114
117
}
115
118
@@ -351,8 +354,14 @@ private static DataFrame ReadCsvLinesIntoDataFrame(WrappedStreamReaderOrStringRe
351
354
char separator = ',' , bool header = true ,
352
355
string [ ] columnNames = null , Type [ ] dataTypes = null ,
353
356
long numberOfRowsToRead = - 1 , int guessRows = 10 , bool addIndexColumn = false ,
354
- bool renameDuplicatedColumns = false )
357
+ bool renameDuplicatedColumns = false ,
358
+ CultureInfo cultureInfo = null )
355
359
{
360
+ if ( cultureInfo == null )
361
+ {
362
+ cultureInfo = CultureInfo . CurrentCulture ;
363
+ }
364
+
356
365
if ( dataTypes == null && guessRows <= 0 )
357
366
{
358
367
throw new ArgumentException ( string . Format ( Strings . ExpectedEitherGuessRowsOrDataTypes , nameof ( guessRows ) , nameof ( dataTypes ) ) ) ;
@@ -452,7 +461,7 @@ private static DataFrame ReadCsvLinesIntoDataFrame(WrappedStreamReaderOrStringRe
452
461
}
453
462
else
454
463
{
455
- ret . Append ( fields , inPlace : true ) ;
464
+ ret . Append ( fields , inPlace : true , cultureInfo : cultureInfo ) ;
456
465
}
457
466
++ rowline ;
458
467
}
@@ -508,7 +517,6 @@ public TextReader GetTextReader()
508
517
}
509
518
510
519
}
511
-
512
520
}
513
521
514
522
/// <summary>
@@ -522,14 +530,18 @@ public TextReader GetTextReader()
522
530
/// <param name="numberOfRowsToRead">number of rows to read not including the header(if present)</param>
523
531
/// <param name="guessRows">number of rows used to guess types</param>
524
532
/// <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>
525
535
/// <returns><see cref="DataFrame"/></returns>
526
536
public static DataFrame LoadCsvFromString ( string csvString ,
527
537
char separator = ',' , bool header = true ,
528
538
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 )
530
542
{
531
543
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 ) ;
533
545
}
534
546
535
547
/// <summary>
@@ -545,12 +557,13 @@ public static DataFrame LoadCsvFromString(string csvString,
545
557
/// <param name="addIndexColumn">add one column with the row index</param>
546
558
/// <param name="encoding">The character encoding. Defaults to UTF8 if not specified</param>
547
559
/// <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>
548
561
/// <returns><see cref="DataFrame"/></returns>
549
562
public static DataFrame LoadCsv ( Stream csvStream ,
550
563
char separator = ',' , bool header = true ,
551
564
string [ ] columnNames = null , Type [ ] dataTypes = null ,
552
565
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 )
554
567
{
555
568
if ( ! csvStream . CanSeek )
556
569
{
@@ -563,7 +576,7 @@ public static DataFrame LoadCsv(Stream csvStream,
563
576
}
564
577
565
578
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 ) ;
567
580
}
568
581
569
582
/// <summary>
0 commit comments