Skip to content

Commit ce79c80

Browse files
thatneatjreback
authored andcommitted
API: Raise more specific exception on concat([None])
1 parent 32c5016 commit ce79c80

File tree

3 files changed

+13
-12
lines changed

3 files changed

+13
-12
lines changed

doc/source/v0.15.0.txt

+2-1
Original file line numberDiff line numberDiff line change
@@ -320,7 +320,8 @@ API changes
320320
- add ``copy=True`` argument to ``pd.concat`` to enable pass thru of complete blocks (:issue:`8252`)
321321

322322
- Added support for numpy 1.8+ data types (``bool_``, ``int_``, ``float_``, ``string_``) for conversion to R dataframe (:issue:`8400`)
323-
323+
- Concatenating no objects will now raise a ``ValueError`` rather than a bare ``Exception``.
324+
- Concatenation errors will now be sub-classes of ``ValueError`` rather than raw ``Exception`` (:issue:`8501`)
324325
- ``DataFrame.plot`` and ``Series.plot`` keywords are now have consistent orders (:issue:`8037`)
325326

326327
.. _whatsnew_0150.memory:

pandas/tools/merge.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ def merge(left, right, how='inner', on=None, left_on=None, right_on=None,
4141
merge.__doc__ = _merge_doc % '\nleft : DataFrame'
4242

4343

44-
class MergeError(Exception):
44+
class MergeError(ValueError):
4545
pass
4646

4747

@@ -679,7 +679,7 @@ def concat(objs, axis=0, join='outer', join_axes=None, ignore_index=False,
679679
If a dict is passed, the sorted keys will be used as the `keys`
680680
argument, unless it is passed, in which case the values will be
681681
selected (see below). Any None objects will be dropped silently unless
682-
they are all None in which case an Exception will be raised
682+
they are all None in which case a ValueError will be raised
683683
axis : {0, 1, ...}, default 0
684684
The axis to concatenate along
685685
join : {'inner', 'outer'}, default 'outer'
@@ -764,7 +764,7 @@ def __init__(self, objs, axis=0, join='outer', join_axes=None,
764764
keys = clean_keys
765765

766766
if len(objs) == 0:
767-
raise Exception('All objects passed were None')
767+
raise ValueError('All objects passed were None')
768768

769769
# consolidate data & figure out what our result ndim is going to be
770770
ndims = set()

pandas/tools/tests/test_merge.py

+8-8
Original file line numberDiff line numberDiff line change
@@ -224,12 +224,12 @@ def test_join_on(self):
224224
self.assertTrue(np.isnan(joined['three']['c']))
225225

226226
# merge column not p resent
227-
self.assertRaises(Exception, target.join, source, on='E')
227+
self.assertRaises(KeyError, target.join, source, on='E')
228228

229229
# overlap
230230
source_copy = source.copy()
231231
source_copy['A'] = 0
232-
self.assertRaises(Exception, target.join, source_copy, on='A')
232+
self.assertRaises(ValueError, target.join, source_copy, on='A')
233233

234234
def test_join_on_fails_with_different_right_index(self):
235235
with tm.assertRaises(ValueError):
@@ -551,15 +551,15 @@ def test_merge_index_singlekey_inner(self):
551551
assert_frame_equal(result, expected.ix[:, result.columns])
552552

553553
def test_merge_misspecified(self):
554-
self.assertRaises(Exception, merge, self.left, self.right,
554+
self.assertRaises(ValueError, merge, self.left, self.right,
555555
left_index=True)
556-
self.assertRaises(Exception, merge, self.left, self.right,
556+
self.assertRaises(ValueError, merge, self.left, self.right,
557557
right_index=True)
558558

559-
self.assertRaises(Exception, merge, self.left, self.left,
559+
self.assertRaises(ValueError, merge, self.left, self.left,
560560
left_on='key', on='key')
561561

562-
self.assertRaises(Exception, merge, self.df, self.df2,
562+
self.assertRaises(ValueError, merge, self.df, self.df2,
563563
left_on=['key1'], right_on=['key1', 'key2'])
564564

565565
def test_merge_overlap(self):
@@ -854,7 +854,7 @@ def test_overlapping_columns_error_message(self):
854854
df.columns = ['key', 'foo', 'foo']
855855
df2.columns = ['key', 'bar', 'bar']
856856

857-
self.assertRaises(Exception, merge, df, df2)
857+
self.assertRaises(ValueError, merge, df, df2)
858858

859859
def _check_merge(x, y):
860860
for how in ['inner', 'left', 'outer']:
@@ -2122,7 +2122,7 @@ def test_concat_exclude_none(self):
21222122
pieces = [df[:5], None, None, df[5:]]
21232123
result = concat(pieces)
21242124
tm.assert_frame_equal(result, df)
2125-
self.assertRaises(Exception, concat, [None, None])
2125+
self.assertRaises(ValueError, concat, [None, None])
21262126

21272127
def test_concat_datetime64_block(self):
21282128
from pandas.tseries.index import date_range

0 commit comments

Comments
 (0)