Skip to content

Commit f02b548

Browse files
topper-123jreback
authored andcommitted
Change MultiIndex repr (labels -> codes) (pandas-dev#24731)
1 parent f641c35 commit f02b548

File tree

4 files changed

+36
-36
lines changed

4 files changed

+36
-36
lines changed

pandas/core/indexes/base.py

+8-8
Original file line numberDiff line numberDiff line change
@@ -1302,15 +1302,15 @@ def set_names(self, names, level=None, inplace=False):
13021302
... [2018, 2019]])
13031303
>>> idx
13041304
MultiIndex(levels=[['cobra', 'python'], [2018, 2019]],
1305-
labels=[[1, 1, 0, 0], [0, 1, 0, 1]])
1305+
codes=[[1, 1, 0, 0], [0, 1, 0, 1]])
13061306
>>> idx.set_names(['kind', 'year'], inplace=True)
13071307
>>> idx
13081308
MultiIndex(levels=[['cobra', 'python'], [2018, 2019]],
1309-
labels=[[1, 1, 0, 0], [0, 1, 0, 1]],
1309+
codes=[[1, 1, 0, 0], [0, 1, 0, 1]],
13101310
names=['kind', 'year'])
13111311
>>> idx.set_names('species', level=0)
13121312
MultiIndex(levels=[['cobra', 'python'], [2018, 2019]],
1313-
labels=[[1, 1, 0, 0], [0, 1, 0, 1]],
1313+
codes=[[1, 1, 0, 0], [0, 1, 0, 1]],
13141314
names=['species', 'year'])
13151315
"""
13161316

@@ -1373,11 +1373,11 @@ def rename(self, name, inplace=False):
13731373
... names=['kind', 'year'])
13741374
>>> idx
13751375
MultiIndex(levels=[['cobra', 'python'], [2018, 2019]],
1376-
labels=[[1, 1, 0, 0], [0, 1, 0, 1]],
1376+
codes=[[1, 1, 0, 0], [0, 1, 0, 1]],
13771377
names=['kind', 'year'])
13781378
>>> idx.rename(['species', 'year'])
13791379
MultiIndex(levels=[['cobra', 'python'], [2018, 2019]],
1380-
labels=[[1, 1, 0, 0], [0, 1, 0, 1]],
1380+
codes=[[1, 1, 0, 0], [0, 1, 0, 1]],
13811381
names=['species', 'year'])
13821382
>>> idx.rename('species')
13831383
Traceback (most recent call last):
@@ -4511,7 +4511,7 @@ def isin(self, values, level=None):
45114511
... names=('number', 'color'))
45124512
>>> midx
45134513
MultiIndex(levels=[[1, 2, 3], ['blue', 'green', 'red']],
4514-
labels=[[0, 1, 2], [2, 0, 1]],
4514+
codes=[[0, 1, 2], [2, 0, 1]],
45154515
names=['number', 'color'])
45164516
45174517
Check whether the strings in the 'color' level of the MultiIndex
@@ -5214,7 +5214,7 @@ def ensure_index_from_sequences(sequences, names=None):
52145214
>>> ensure_index_from_sequences([['a', 'a'], ['a', 'b']],
52155215
names=['L1', 'L2'])
52165216
MultiIndex(levels=[['a'], ['a', 'b']],
5217-
labels=[[0, 0], [0, 1]],
5217+
codes=[[0, 0], [0, 1]],
52185218
names=['L1', 'L2'])
52195219
52205220
See Also
@@ -5255,7 +5255,7 @@ def ensure_index(index_like, copy=False):
52555255
52565256
>>> ensure_index([['a', 'a'], ['b', 'c']])
52575257
MultiIndex(levels=[['a'], ['b', 'c']],
5258-
labels=[[0, 0], [0, 1]])
5258+
codes=[[0, 0], [0, 1]])
52595259
52605260
See Also
52615261
--------

pandas/core/indexes/multi.py

+26-26
Original file line numberDiff line numberDiff line change
@@ -190,8 +190,8 @@ class MultiIndex(Index):
190190
>>> arrays = [[1, 1, 2, 2], ['red', 'blue', 'red', 'blue']]
191191
>>> pd.MultiIndex.from_arrays(arrays, names=('number', 'color'))
192192
MultiIndex(levels=[[1, 2], ['blue', 'red']],
193-
labels=[[0, 0, 1, 1], [1, 0, 1, 0]],
194-
names=['number', 'color'])
193+
codes=[[0, 0, 1, 1], [1, 0, 1, 0]],
194+
names=['number', 'color'])
195195
196196
See further examples for how to construct a MultiIndex in the doc strings
197197
of the mentioned helper methods.
@@ -321,7 +321,7 @@ def from_arrays(cls, arrays, sortorder=None, names=None):
321321
>>> arrays = [[1, 1, 2, 2], ['red', 'blue', 'red', 'blue']]
322322
>>> pd.MultiIndex.from_arrays(arrays, names=('number', 'color'))
323323
MultiIndex(levels=[[1, 2], ['blue', 'red']],
324-
labels=[[0, 0, 1, 1], [1, 0, 1, 0]],
324+
codes=[[0, 0, 1, 1], [1, 0, 1, 0]],
325325
names=['number', 'color'])
326326
"""
327327
if not is_list_like(arrays):
@@ -376,7 +376,7 @@ def from_tuples(cls, tuples, sortorder=None, names=None):
376376
... (2, u'red'), (2, u'blue')]
377377
>>> pd.MultiIndex.from_tuples(tuples, names=('number', 'color'))
378378
MultiIndex(levels=[[1, 2], ['blue', 'red']],
379-
labels=[[0, 0, 1, 1], [1, 0, 1, 0]],
379+
codes=[[0, 0, 1, 1], [1, 0, 1, 0]],
380380
names=['number', 'color'])
381381
"""
382382
if not is_list_like(tuples):
@@ -433,7 +433,7 @@ def from_product(cls, iterables, sortorder=None, names=None):
433433
>>> pd.MultiIndex.from_product([numbers, colors],
434434
... names=['number', 'color'])
435435
MultiIndex(levels=[[0, 1, 2], ['green', 'purple']],
436-
labels=[[0, 0, 1, 1, 2, 2], [0, 1, 0, 1, 0, 1]],
436+
codes=[[0, 0, 1, 1, 2, 2], [0, 1, 0, 1, 0, 1]],
437437
names=['number', 'color'])
438438
"""
439439
from pandas.core.arrays.categorical import _factorize_from_iterables
@@ -493,14 +493,14 @@ def from_frame(cls, df, sortorder=None, names=None):
493493
494494
>>> pd.MultiIndex.from_frame(df)
495495
MultiIndex(levels=[['HI', 'NJ'], ['Precip', 'Temp']],
496-
labels=[[0, 0, 1, 1], [1, 0, 1, 0]],
496+
codes=[[0, 0, 1, 1], [1, 0, 1, 0]],
497497
names=['a', 'b'])
498498
499499
Using explicit names, instead of the column names
500500
501501
>>> pd.MultiIndex.from_frame(df, names=['state', 'observation'])
502502
MultiIndex(levels=[['HI', 'NJ'], ['Precip', 'Temp']],
503-
labels=[[0, 0, 1, 1], [1, 0, 1, 0]],
503+
codes=[[0, 0, 1, 1], [1, 0, 1, 0]],
504504
names=['state', 'observation'])
505505
"""
506506
if not isinstance(df, ABCDataFrame):
@@ -619,19 +619,19 @@ def set_levels(self, levels, level=None, inplace=False,
619619
names=['foo', 'bar'])
620620
>>> idx.set_levels([['a','b'], [1,2]])
621621
MultiIndex(levels=[[u'a', u'b'], [1, 2]],
622-
labels=[[0, 0, 1, 1], [0, 1, 0, 1]],
622+
codes=[[0, 0, 1, 1], [0, 1, 0, 1]],
623623
names=[u'foo', u'bar'])
624624
>>> idx.set_levels(['a','b'], level=0)
625625
MultiIndex(levels=[[u'a', u'b'], [u'one', u'two']],
626-
labels=[[0, 0, 1, 1], [0, 1, 0, 1]],
626+
codes=[[0, 0, 1, 1], [0, 1, 0, 1]],
627627
names=[u'foo', u'bar'])
628628
>>> idx.set_levels(['a','b'], level='bar')
629629
MultiIndex(levels=[[1, 2], [u'a', u'b']],
630-
labels=[[0, 0, 1, 1], [0, 1, 0, 1]],
630+
codes=[[0, 0, 1, 1], [0, 1, 0, 1]],
631631
names=[u'foo', u'bar'])
632632
>>> idx.set_levels([['a','b'], [1,2]], level=[0,1])
633633
MultiIndex(levels=[[u'a', u'b'], [1, 2]],
634-
labels=[[0, 0, 1, 1], [0, 1, 0, 1]],
634+
codes=[[0, 0, 1, 1], [0, 1, 0, 1]],
635635
names=[u'foo', u'bar'])
636636
"""
637637
if is_list_like(levels) and not isinstance(levels, Index):
@@ -738,19 +738,19 @@ def set_codes(self, codes, level=None, inplace=False,
738738
names=['foo', 'bar'])
739739
>>> idx.set_codes([[1,0,1,0], [0,0,1,1]])
740740
MultiIndex(levels=[[1, 2], [u'one', u'two']],
741-
labels=[[1, 0, 1, 0], [0, 0, 1, 1]],
741+
codes=[[1, 0, 1, 0], [0, 0, 1, 1]],
742742
names=[u'foo', u'bar'])
743743
>>> idx.set_codes([1,0,1,0], level=0)
744744
MultiIndex(levels=[[1, 2], [u'one', u'two']],
745-
labels=[[1, 0, 1, 0], [0, 1, 0, 1]],
745+
codes=[[1, 0, 1, 0], [0, 1, 0, 1]],
746746
names=[u'foo', u'bar'])
747747
>>> idx.set_codes([0,0,1,1], level='bar')
748748
MultiIndex(levels=[[1, 2], [u'one', u'two']],
749-
labels=[[0, 0, 1, 1], [0, 0, 1, 1]],
749+
codes=[[0, 0, 1, 1], [0, 0, 1, 1]],
750750
names=[u'foo', u'bar'])
751751
>>> idx.set_codes([[1,0,1,0], [0,0,1,1]], level=[0,1])
752752
MultiIndex(levels=[[1, 2], [u'one', u'two']],
753-
labels=[[1, 0, 1, 0], [0, 0, 1, 1]],
753+
codes=[[1, 0, 1, 0], [0, 0, 1, 1]],
754754
names=[u'foo', u'bar'])
755755
"""
756756
if level is not None and not is_list_like(level):
@@ -909,8 +909,8 @@ def _format_attrs(self):
909909
attrs = [
910910
('levels', ibase.default_pprint(self._levels,
911911
max_seq_items=False)),
912-
('labels', ibase.default_pprint(self._codes,
913-
max_seq_items=False))]
912+
('codes', ibase.default_pprint(self._codes,
913+
max_seq_items=False))]
914914
if com._any_not_none(*self.names):
915915
attrs.append(('names', ibase.default_pprint(self.names)))
916916
if self.sortorder is not None:
@@ -1509,8 +1509,8 @@ def to_hierarchical(self, n_repeat, n_shuffle=1):
15091509
(2, u'one'), (2, u'two')])
15101510
>>> idx.to_hierarchical(3)
15111511
MultiIndex(levels=[[1, 2], [u'one', u'two']],
1512-
labels=[[0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1],
1513-
[0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1]])
1512+
codes=[[0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1],
1513+
[0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1]])
15141514
"""
15151515
levels = self.levels
15161516
codes = [np.repeat(level_codes, n_repeat) for
@@ -1601,11 +1601,11 @@ def _sort_levels_monotonic(self):
16011601
codes=[[0, 0, 1, 1], [0, 1, 0, 1]])
16021602
>>> i
16031603
MultiIndex(levels=[['a', 'b'], ['bb', 'aa']],
1604-
labels=[[0, 0, 1, 1], [0, 1, 0, 1]])
1604+
codes=[[0, 0, 1, 1], [0, 1, 0, 1]])
16051605
16061606
>>> i.sort_monotonic()
16071607
MultiIndex(levels=[['a', 'b'], ['aa', 'bb']],
1608-
labels=[[0, 0, 1, 1], [1, 0, 1, 0]])
1608+
codes=[[0, 0, 1, 1], [1, 0, 1, 0]])
16091609
16101610
"""
16111611

@@ -1657,18 +1657,18 @@ def remove_unused_levels(self):
16571657
--------
16581658
>>> i = pd.MultiIndex.from_product([range(2), list('ab')])
16591659
MultiIndex(levels=[[0, 1], ['a', 'b']],
1660-
labels=[[0, 0, 1, 1], [0, 1, 0, 1]])
1660+
codes=[[0, 0, 1, 1], [0, 1, 0, 1]])
16611661
16621662
>>> i[2:]
16631663
MultiIndex(levels=[[0, 1], ['a', 'b']],
1664-
labels=[[1, 1], [0, 1]])
1664+
codes=[[1, 1], [0, 1]])
16651665
16661666
The 0 from the first level is not represented
16671667
and can be removed
16681668
16691669
>>> i[2:].remove_unused_levels()
16701670
MultiIndex(levels=[[1], ['a', 'b']],
1671-
labels=[[0, 0], [0, 1]])
1671+
codes=[[0, 0], [0, 1]])
16721672
"""
16731673

16741674
new_levels = []
@@ -1975,10 +1975,10 @@ def swaplevel(self, i=-2, j=-1):
19751975
... codes=[[0, 0, 1, 1], [0, 1, 0, 1]])
19761976
>>> mi
19771977
MultiIndex(levels=[['a', 'b'], ['bb', 'aa']],
1978-
labels=[[0, 0, 1, 1], [0, 1, 0, 1]])
1978+
codes=[[0, 0, 1, 1], [0, 1, 0, 1]])
19791979
>>> mi.swaplevel(0, 1)
19801980
MultiIndex(levels=[['bb', 'aa'], ['a', 'b']],
1981-
labels=[[0, 1, 0, 1], [0, 0, 1, 1]])
1981+
codes=[[0, 1, 0, 1], [0, 0, 1, 1]])
19821982
"""
19831983
new_levels = list(self.levels)
19841984
new_codes = list(self.codes)

pandas/core/strings.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -2473,7 +2473,7 @@ def rsplit(self, pat=None, n=-1, expand=False):
24732473
24742474
>>> idx.str.partition()
24752475
MultiIndex(levels=[['X', 'Y'], [' '], ['123', '999']],
2476-
labels=[[0, 1], [0, 0], [0, 1]])
2476+
codes=[[0, 1], [0, 0], [0, 1]])
24772477
24782478
Or an index with tuples with ``expand=False``:
24792479

pandas/tests/util/test_assert_index_equal.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ def test_index_equal_levels_mismatch():
1313
Index levels are different
1414
\\[left\\]: 1, Int64Index\\(\\[1, 2, 3\\], dtype='int64'\\)
1515
\\[right\\]: 2, MultiIndex\\(levels=\\[\\[u?'A', u?'B'\\], \\[1, 2, 3, 4\\]\\],
16-
labels=\\[\\[0, 0, 1, 1\\], \\[0, 1, 2, 3\\]\\]\\)"""
16+
codes=\\[\\[0, 0, 1, 1\\], \\[0, 1, 2, 3\\]\\]\\)"""
1717

1818
idx1 = Index([1, 2, 3])
1919
idx2 = MultiIndex.from_tuples([("A", 1), ("A", 2),

0 commit comments

Comments
 (0)