Skip to content

Commit a5d5028

Browse files
committed
improved error message when concatenating an empty sequence of dataframes
1 parent c0ff3e7 commit a5d5028

File tree

3 files changed

+24
-1
lines changed

3 files changed

+24
-1
lines changed

doc/source/whatsnew/v0.17.0.txt

+1
Original file line numberDiff line numberDiff line change
@@ -526,6 +526,7 @@ Series with a ``CategoricalIndex`` (:issue:`10704`)
526526
``return np.datetime64('NaT')`` ``to_datetime64`` (unchanged)
527527
``raise ValueError`` All other public methods (names not beginning with underscores)
528528
=============================== ===============================================================
529+
- Improved error message when concatenating an empty iterable of dataframes (:issue:`9157`)
529530

530531
.. _whatsnew_0170.deprecations:
531532

pandas/tools/merge.py

+6-1
Original file line numberDiff line numberDiff line change
@@ -775,9 +775,14 @@ def __init__(self, objs, axis=0, join='outer', join_axes=None,
775775
if keys is None:
776776
keys = sorted(objs)
777777
objs = [objs[k] for k in keys]
778+
else:
779+
objs = list(objs)
780+
781+
if len(objs) == 0:
782+
raise ValueError('No objects to concatenate')
778783

779784
if keys is None:
780-
objs = [obj for obj in objs if obj is not None ]
785+
objs = [obj for obj in objs if obj is not None]
781786
else:
782787
# #1649
783788
clean_keys = []

pandas/tools/tests/test_merge.py

+17
Original file line numberDiff line numberDiff line change
@@ -2552,6 +2552,23 @@ def _constructor(self):
25522552

25532553
tm.assertIsInstance(result, NotADataFrame)
25542554

2555+
def test_empty_sequence_concat(self):
2556+
# GH 9157
2557+
empty_pat = "[Nn]o objects"
2558+
none_pat = "objects.*None"
2559+
test_cases = [
2560+
((), empty_pat),
2561+
([], empty_pat),
2562+
({}, empty_pat),
2563+
([None], none_pat),
2564+
([None, None], none_pat)
2565+
]
2566+
for df_seq, pattern in test_cases:
2567+
assertRaisesRegexp(ValueError, pattern, pd.concat, df_seq)
2568+
2569+
pd.concat([pd.DataFrame()])
2570+
pd.concat([None, pd.DataFrame()])
2571+
pd.concat([pd.DataFrame(), None])
25552572

25562573
if __name__ == '__main__':
25572574
nose.runmodule(argv=[__file__, '-vvs', '-x', '--pdb', '--pdb-failure'],

0 commit comments

Comments
 (0)