Skip to content

Commit 382f948

Browse files
author
Prashanth Govindarajan
committed
Last bit of feedback
1 parent a341a93 commit 382f948

File tree

1 file changed

+53
-54
lines changed

1 file changed

+53
-54
lines changed

src/Microsoft.Data.Analysis/DataFrame.IO.cs

Lines changed: 53 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -183,73 +183,74 @@ private static DataFrame ReadCsvLinesIntoDataFrame(WrappedStreamReaderOrStringRe
183183
throw new ArgumentException(string.Format(Strings.ExpectedEitherGuessRowsOrDataTypes, nameof(guessRows), nameof(dataTypes)));
184184
}
185185

186-
TextReader textReader = wrappedReader.GetTextReader();
187-
TextFieldParser parser = new TextFieldParser(textReader);
188-
parser.SetDelimiters(separator.ToString());
189-
190-
var linesForGuessType = new List<string[]>();
191-
long rowline = 0;
192-
int numberOfColumns = dataTypes?.Length ?? 0;
193-
194-
if (header == true && numberOfRowsToRead != -1)
195-
{
196-
numberOfRowsToRead++;
197-
}
198-
199186
List<DataFrameColumn> columns;
200-
// First pass: schema and number of rows.
201-
202187
string[] fields;
203-
while ((fields = parser.ReadFields()) != null)
188+
using (var textReader = wrappedReader.GetTextReader())
204189
{
205-
if ((numberOfRowsToRead == -1) || rowline < numberOfRowsToRead)
190+
TextFieldParser parser = new TextFieldParser(textReader);
191+
parser.SetDelimiters(separator.ToString());
192+
193+
var linesForGuessType = new List<string[]>();
194+
long rowline = 0;
195+
int numberOfColumns = dataTypes?.Length ?? 0;
196+
197+
if (header == true && numberOfRowsToRead != -1)
206198
{
207-
if (linesForGuessType.Count < guessRows || (header && rowline == 0))
199+
numberOfRowsToRead++;
200+
}
201+
202+
// First pass: schema and number of rows.
203+
while ((fields = parser.ReadFields()) != null)
204+
{
205+
if ((numberOfRowsToRead == -1) || rowline < numberOfRowsToRead)
208206
{
209-
string[] spl = fields;
210-
if (header && rowline == 0)
207+
if (linesForGuessType.Count < guessRows || (header && rowline == 0))
211208
{
212-
if (columnNames == null)
209+
string[] spl = fields;
210+
if (header && rowline == 0)
213211
{
214-
columnNames = spl;
212+
if (columnNames == null)
213+
{
214+
columnNames = spl;
215+
}
216+
}
217+
else
218+
{
219+
linesForGuessType.Add(spl);
220+
numberOfColumns = Math.Max(numberOfColumns, spl.Length);
215221
}
216-
}
217-
else
218-
{
219-
linesForGuessType.Add(spl);
220-
numberOfColumns = Math.Max(numberOfColumns, spl.Length);
221222
}
222223
}
224+
++rowline;
225+
if (rowline == guessRows || guessRows == 0)
226+
{
227+
break;
228+
}
223229
}
224-
++rowline;
225-
if (rowline == guessRows || guessRows == 0)
230+
231+
if (rowline == 0)
226232
{
227-
break;
233+
throw new FormatException(Strings.EmptyFile);
228234
}
229-
}
230235

231-
if (rowline == 0)
232-
{
233-
throw new FormatException(Strings.EmptyFile);
234-
}
235-
236-
columns = new List<DataFrameColumn>(numberOfColumns);
237-
// Guesses types or looks up dataTypes and adds columns.
238-
for (int i = 0; i < numberOfColumns; ++i)
239-
{
240-
Type kind = dataTypes == null ? GuessKind(i, linesForGuessType) : dataTypes[i];
241-
columns.Add(CreateColumn(kind, columnNames, i));
236+
columns = new List<DataFrameColumn>(numberOfColumns);
237+
// Guesses types or looks up dataTypes and adds columns.
238+
for (int i = 0; i < numberOfColumns; ++i)
239+
{
240+
Type kind = dataTypes == null ? GuessKind(i, linesForGuessType) : dataTypes[i];
241+
columns.Add(CreateColumn(kind, columnNames, i));
242+
}
242243
}
243244

244245
DataFrame ret = new DataFrame(columns);
245246

246247
// Fill values.
247-
using (textReader = wrappedReader.GetTextReader())
248+
using (var textReader = wrappedReader.GetTextReader())
248249
{
249-
parser = new TextFieldParser(textReader);
250+
TextFieldParser parser = new TextFieldParser(textReader);
250251
parser.SetDelimiters(separator.ToString());
251252

252-
rowline = 0;
253+
long rowline = 0;
253254
while ((fields = parser.ReadFields()) != null && (numberOfRowsToRead == -1 || rowline < numberOfRowsToRead))
254255
{
255256
string[] spl = fields;
@@ -305,16 +306,14 @@ public WrappedStreamReaderOrStringReader(string csvString)
305306
// Returns a new TextReader. If the wrapped object is a stream, the stream is reset to its initial position.
306307
public TextReader GetTextReader()
307308
{
309+
if (_stream != null)
308310
{
309-
if (_stream != null)
310-
{
311-
_stream.Seek(_initialPosition, SeekOrigin.Begin);
312-
return new StreamReader(_stream, _encoding, detectEncodingFromByteOrderMarks: true, DefaultStreamReaderBufferSize, leaveOpen: true);
313-
}
314-
else
315-
{
316-
return new StringReader(_csvString);
317-
}
311+
_stream.Seek(_initialPosition, SeekOrigin.Begin);
312+
return new StreamReader(_stream, _encoding, detectEncodingFromByteOrderMarks: true, DefaultStreamReaderBufferSize, leaveOpen: true);
313+
}
314+
else
315+
{
316+
return new StringReader(_csvString);
318317
}
319318

320319
}

0 commit comments

Comments
 (0)