Skip to content

Commit d4382cb

Browse files
committed
BUG: DataFrame.is_numeric needs to use inferred_type, closes #954
1 parent 6147541 commit d4382cb

File tree

3 files changed

+16
-1
lines changed

3 files changed

+16
-1
lines changed

pandas/core/index.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ def is_monotonic(self):
148148
return False
149149

150150
def is_numeric(self):
151-
return issubclass(self.dtype.type, np.number)
151+
return self.inferred_type in ['integer', 'floating']
152152

153153
def is_datetype(self):
154154
for key in self.values:

pandas/tests/test_index.py

+11
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ def setUp(self):
2121
self.strIndex = tm.makeStringIndex(100)
2222
self.dateIndex = tm.makeDateIndex(100)
2323
self.intIndex = tm.makeIntIndex(100)
24+
self.floatIndex = tm.makeFloatIndex(100)
2425
self.empty = Index([])
2526
self.tuples = Index(zip(['foo', 'bar', 'baz'], [1, 2, 3]))
2627

@@ -267,6 +268,12 @@ def testit(index):
267268
# self.assert_(empty is NULL_INDEX)
268269
# self.assert_(self.dateIndex[15:15] is NULL_INDEX)
269270

271+
def test_is_numeric(self):
272+
self.assert_(not self.dateIndex.is_numeric())
273+
self.assert_(not self.strIndex.is_numeric())
274+
self.assert_(self.intIndex.is_numeric())
275+
self.assert_(self.floatIndex.is_numeric())
276+
270277
def test_is_all_dates(self):
271278
self.assert_(self.dateIndex.is_all_dates)
272279
self.assert_(not self.strIndex.is_all_dates)
@@ -829,6 +836,10 @@ def test_contains(self):
829836
def test_is_all_dates(self):
830837
self.assert_(not self.index.is_all_dates)
831838

839+
def test_is_numeric(self):
840+
# MultiIndex is never numeric
841+
self.assert_(not self.index.is_numeric())
842+
832843
def test_getitem(self):
833844
# scalar
834845
self.assertEquals(self.index[2], ('bar', 'one'))

pandas/util/testing.py

+4
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,10 @@ def makeStringIndex(k):
159159
def makeIntIndex(k):
160160
return Index(range(k))
161161

162+
def makeFloatIndex(k):
163+
values = sorted(np.random.random_sample(k)) - np.random.random_sample(1)
164+
return Index(values * (10 ** np.random.randint(0, 9)))
165+
162166
def makeDateIndex(k):
163167
dates = list(DateRange(datetime(2000, 1, 1), periods=k))
164168
return Index(dates)

0 commit comments

Comments
 (0)