Skip to content

Commit 62c4153

Browse files
author
y-p
committed
Merge pull request #5770 from y-p/GH5766
BUG: regression in read_csv parser handling of usecols GH5766
2 parents 2485e09 + 5e6e590 commit 62c4153

File tree

2 files changed

+13
-0
lines changed

2 files changed

+13
-0
lines changed

pandas/io/tests/test_parsers.py

+10
Original file line numberDiff line numberDiff line change
@@ -2049,6 +2049,16 @@ def test_usecols(self):
20492049
header=None, usecols=['b', 'c'])
20502050
tm.assert_frame_equal(result2, result)
20512051

2052+
2053+
# 5766
2054+
result = self.read_csv(StringIO(data), names=['a', 'b'],
2055+
header=None, usecols=[0, 1])
2056+
2057+
expected = self.read_csv(StringIO(data), names=['a', 'b', 'c'],
2058+
header=None)
2059+
expected = expected[['a', 'b']]
2060+
tm.assert_frame_equal(result, expected)
2061+
20522062
# length conflict, passed names and usecols disagree
20532063
self.assertRaises(ValueError, self.read_csv, StringIO(data),
20542064
names=['a', 'b'], usecols=[1], header=None)

pandas/parser.pyx

+3
Original file line numberDiff line numberDiff line change
@@ -898,6 +898,9 @@ cdef class TextReader:
898898
if i < self.leading_cols:
899899
# Pass through leading columns always
900900
name = i
901+
elif self.usecols and nused == len(self.usecols):
902+
# Once we've gathered all requested columns, stop. GH5766
903+
break
901904
else:
902905
name = self._get_column_name(i, nused)
903906
if self.has_usecols and not (i in self.usecols or

0 commit comments

Comments
 (0)