diff --git a/pandas/core/index.py b/pandas/core/index.py index b7792309f66ff..12d2574d5efb6 100644 --- a/pandas/core/index.py +++ b/pandas/core/index.py @@ -133,11 +133,15 @@ def _shallow_copy(self): return self.view() def __repr__(self): + if len(self) > 6 and len(self) > np.get_printoptions()['threshold']: + data = self[:3].tolist() + ["..."] + self[-3:].tolist() + else: + data = self if py3compat.PY3: - prepr = com.pprint_thing(self) + prepr = com.pprint_thing(data) else: - prepr = com.pprint_thing_encoded(self) - return 'Index(%s, dtype=%s)' % (prepr, self.dtype) + prepr = com.pprint_thing_encoded(data) + return '%s(%s, dtype=%s)' % (type(self).__name__, prepr, self.dtype) def astype(self, dtype): return Index(self.values.astype(dtype), name=self.name, diff --git a/pandas/tests/test_index.py b/pandas/tests/test_index.py index b94840d0dfd85..4a2a64ead366a 100644 --- a/pandas/tests/test_index.py +++ b/pandas/tests/test_index.py @@ -851,6 +851,11 @@ def test_print_unicode_columns(self): df=pd.DataFrame({u"\u05d0":[1,2,3],"\u05d1":[4,5,6],"c":[7,8,9]}) print(df.columns) # should not raise UnicodeDecodeError + def test_repr_summary(self): + r = repr(pd.Index(np.arange(10000))) + self.assertTrue(len(r) < 100) + self.assertTrue( "..." in r) + class TestMultiIndex(unittest.TestCase): def setUp(self):