Skip to content

Commit 989a51b

Browse files
committed
Merge pull request pandas-dev#8041 from ahlmss/slice_empty
BUG: Don't call np.roll on empty arrays.
2 parents 430138e + 8631972 commit 989a51b

File tree

3 files changed

+12
-2
lines changed

3 files changed

+12
-2
lines changed

doc/source/v0.15.0.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -389,7 +389,7 @@ Enhancements
389389

390390

391391

392-
392+
- Bug in ``DataFrame.shift`` where empty columns would throw ``ZeroDivisionError`` on numpy 1.7 (:issue:`8019`)
393393

394394

395395

pandas/core/internals.py

+4-1
Original file line numberDiff line numberDiff line change
@@ -817,7 +817,10 @@ def shift(self, periods, axis=0):
817817
if f_ordered:
818818
new_values = new_values.T
819819
axis = new_values.ndim - axis - 1
820-
new_values = np.roll(new_values, periods, axis=axis)
820+
821+
if np.prod(new_values.shape):
822+
new_values = np.roll(new_values, periods, axis=axis)
823+
821824
axis_indexer = [ slice(None) ] * self.ndim
822825
if periods > 0:
823826
axis_indexer[axis] = slice(None,periods)

pandas/tests/test_frame.py

+7
Original file line numberDiff line numberDiff line change
@@ -9610,6 +9610,13 @@ def test_shift_bool(self):
96109610
columns=['high', 'low'])
96119611
assert_frame_equal(rs, xp)
96129612

9613+
def test_shift_empty(self):
9614+
# Regression test for #8019
9615+
df = DataFrame({'foo': []})
9616+
rs = df.shift(-1)
9617+
9618+
assert_frame_equal(df, rs)
9619+
96139620
def test_tshift(self):
96149621
# PeriodIndex
96159622
ps = tm.makePeriodFrame()

0 commit comments

Comments
 (0)