Skip to content

Commit 42ed1a8

Browse files
authored and
committed
BUG: Nrows cannot be zero for read_csv. Fixes pandas-dev#21141
1 parent 4807905 commit 42ed1a8

File tree

3 files changed

+13
-3
lines changed

3 files changed

+13
-3
lines changed

pandas/io/parsers.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1027,7 +1027,7 @@ def _failover_to_python(self):
10271027
raise com.AbstractMethodError(self)
10281028

10291029
def read(self, nrows=None):
1030-
nrows = _validate_integer('nrows', nrows)
1030+
nrows = _validate_integer('nrows', nrows, min_val=1)
10311031

10321032
if nrows is not None:
10331033
if self.options.get('skipfooter'):

pandas/tests/io/parser/common.py

+4-1
Original file line numberDiff line numberDiff line change
@@ -364,7 +364,7 @@ def test_read_nrows(self):
364364
df = self.read_csv(StringIO(self.data1), nrows=3.0)
365365
tm.assert_frame_equal(df, expected)
366366

367-
msg = r"'nrows' must be an integer >=0"
367+
msg = r"'nrows' must be an integer >=1"
368368

369369
with tm.assert_raises_regex(ValueError, msg):
370370
self.read_csv(StringIO(self.data1), nrows=1.2)
@@ -375,6 +375,9 @@ def test_read_nrows(self):
375375
with tm.assert_raises_regex(ValueError, msg):
376376
self.read_csv(StringIO(self.data1), nrows=-1)
377377

378+
with tm.assert_raises_regex(ValueError, msg):
379+
self.read_csv(StringIO(self.data1), nrows=0)
380+
378381
def test_read_chunksize(self):
379382
reader = self.read_csv(StringIO(self.data1), index_col=0, chunksize=2)
380383
df = self.read_csv(StringIO(self.data1), index_col=0)

pandas/tests/io/test_excel.py

+8-1
Original file line numberDiff line numberDiff line change
@@ -995,11 +995,18 @@ def test_read_excel_nrows_greater_than_nrows_in_file(self, ext):
995995

996996
def test_read_excel_nrows_non_integer_parameter(self, ext):
997997
# GH 16645
998-
msg = "'nrows' must be an integer >=0"
998+
msg = "'nrows' must be an integer >=1"
999999
with tm.assert_raises_regex(ValueError, msg):
10001000
pd.read_excel(os.path.join(self.dirpath, 'test1' + ext),
10011001
nrows='5')
10021002

1003+
def test_read_excel_nrows_zero_parameter(self, ext):
1004+
# GH 16645
1005+
msg = "'nrows' must be an integer >=1"
1006+
with tm.assert_raises_regex(ValueError, msg):
1007+
pd.read_excel(os.path.join(self.dirpath, 'test1' + ext),
1008+
nrows=0)
1009+
10031010
def test_read_excel_squeeze(self, ext):
10041011
# GH 12157
10051012
f = os.path.join(self.dirpath, 'test_squeeze' + ext)

0 commit comments

Comments
 (0)