Skip to content

Commit fab291b

Browse files
committed
make floordiv return int64index always
1 parent 0407502 commit fab291b

File tree

3 files changed

+14
-17
lines changed

3 files changed

+14
-17
lines changed

pandas/core/common.py

+5
Original file line numberDiff line numberDiff line change
@@ -2199,6 +2199,11 @@ def is_integer_dtype(arr_or_dtype):
21992199
not issubclass(tipo, (np.datetime64, np.timedelta64)))
22002200

22012201

2202+
def is_int64_dtype(arr_or_dtype):
2203+
tipo = _get_dtype_type(arr_or_dtype)
2204+
return issubclass(tipo, np.int64)
2205+
2206+
22022207
def is_int_or_datetime_dtype(arr_or_dtype):
22032208
tipo = _get_dtype_type(arr_or_dtype)
22042209
return (issubclass(tipo, np.integer) or

pandas/core/index.py

+3-12
Original file line numberDiff line numberDiff line change
@@ -3995,8 +3995,8 @@ def from_range(cls, data, name=None, dtype=None, **kwargs):
39953995
stop = data.stop
39963996
start = data.start
39973997
else:
3998-
# seems we only have indexing ops to infer
3999-
# rather than direct accessors
3998+
# seems we only have indexing ops to infer
3999+
# rather than direct accessors
40004000
if len(data) > 1:
40014001
step = data[1] - data[0]
40024002
stop = data[-1] + step
@@ -4395,7 +4395,7 @@ def _evaluate_numeric_binop(self, other):
43954395

43964396
# we don't have a representable op
43974397
# so return a base index
4398-
if not is_integer(rstep):
4398+
if not is_integer(rstep) or not rstep:
43994399
raise ValueError
44004400

44014401
else:
@@ -4440,15 +4440,6 @@ def _evaluate_numeric_binop(self, other):
44404440
operator.mul,
44414441
'__mul__',
44424442
step=operator.mul)
4443-
cls.__floordiv__ = _make_evaluate_binop(
4444-
operator.floordiv,
4445-
'__floordiv__',
4446-
step=operator.floordiv)
4447-
cls.__rfloordiv__ = _make_evaluate_binop(
4448-
operator.floordiv,
4449-
'__floordiv__',
4450-
reversed=True,
4451-
step=operator.floordiv)
44524443
cls.__truediv__ = _make_evaluate_binop(
44534444
operator.truediv,
44544445
'__truediv__',

pandas/tests/test_index.py

+6-5
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
from pandas import compat
66
from pandas.compat import (long, is_platform_windows, range,
77
lrange, lzip, u, zip, PY3)
8+
from itertools import combinations
89
import operator
910
import re
1011
import nose
@@ -3465,9 +3466,8 @@ def create_index(self):
34653466
return RangeIndex(5)
34663467

34673468
def test_binops(self):
3468-
import operator as op
3469-
from itertools import combinations
3470-
ops = [op.add, op.sub, op.mul, op.floordiv, op.truediv, pow]
3469+
ops = [operator.add, operator.sub, operator.mul,
3470+
operator.floordiv, operator.truediv, pow]
34713471
scalars = [-1, 1, 2]
34723472
idxs = [RangeIndex(0, 10, 1),
34733473
RangeIndex(0, 20, 2),
@@ -3611,7 +3611,8 @@ def test_numeric_compat2(self):
36113611
self.assertTrue(result.equals(expected))
36123612

36133613
result = idx // 1
3614-
tm.assert_index_equal(result, idx, exact=True)
3614+
expected = idx._int64index // 1
3615+
tm.assert_index_equal(result, expected, exact=True)
36153616

36163617
# __mul__
36173618
result = idx * idx
@@ -3627,7 +3628,7 @@ def test_numeric_compat2(self):
36273628
# __floordiv__
36283629
idx = RangeIndex(0, 1000, 2)
36293630
result = idx // 2
3630-
expected = RangeIndex(0, 500, 1)
3631+
expected = idx._int64index // 2
36313632
tm.assert_index_equal(result, expected, exact=True)
36323633

36333634
idx = RangeIndex(0, 1000, 1)

0 commit comments

Comments
 (0)