Skip to content

Commit aead29b

Browse files
topper-123jreback
authored andcommitted
API: rename MultiIndex.labels to MultiIndex.codes (#23752)
1 parent 9f2c716 commit aead29b

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

87 files changed

+919
-822
lines changed

asv_bench/benchmarks/groupby.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -473,8 +473,8 @@ def setup(self):
473473
n1 = 400
474474
n2 = 250
475475
index = MultiIndex(levels=[np.arange(n1), tm.makeStringIndex(n2)],
476-
labels=[np.repeat(range(n1), n2).tolist(),
477-
list(range(n2)) * n1],
476+
codes=[np.repeat(range(n1), n2).tolist(),
477+
list(range(n2)) * n1],
478478
names=['lev1', 'lev2'])
479479
arr = np.random.randn(n1 * n2, 3)
480480
arr[::10000, 0] = np.nan

asv_bench/benchmarks/join_merge.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -115,16 +115,16 @@ class Join(object):
115115
def setup(self, sort):
116116
level1 = tm.makeStringIndex(10).values
117117
level2 = tm.makeStringIndex(1000).values
118-
label1 = np.arange(10).repeat(1000)
119-
label2 = np.tile(np.arange(1000), 10)
118+
codes1 = np.arange(10).repeat(1000)
119+
codes2 = np.tile(np.arange(1000), 10)
120120
index2 = MultiIndex(levels=[level1, level2],
121-
labels=[label1, label2])
121+
codes=[codes1, codes2])
122122
self.df_multi = DataFrame(np.random.randn(len(index2), 4),
123123
index=index2,
124124
columns=['A', 'B', 'C', 'D'])
125125

126-
self.key1 = np.tile(level1.take(label1), 10)
127-
self.key2 = np.tile(level2.take(label2), 10)
126+
self.key1 = np.tile(level1.take(codes1), 10)
127+
self.key2 = np.tile(level2.take(codes2), 10)
128128
self.df = DataFrame({'data1': np.random.randn(100000),
129129
'data2': np.random.randn(100000),
130130
'key1': self.key1,

asv_bench/benchmarks/multiindex_object.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,8 +79,8 @@ def setup(self):
7979
levels = [np.arange(n),
8080
tm.makeStringIndex(n).values,
8181
1000 + np.arange(n)]
82-
labels = [np.random.choice(n, (k * n)) for lev in levels]
83-
self.mi = MultiIndex(levels=levels, labels=labels)
82+
codes = [np.random.choice(n, (k * n)) for lev in levels]
83+
self.mi = MultiIndex(levels=levels, codes=codes)
8484

8585
def time_duplicated(self):
8686
self.mi.duplicated()

asv_bench/benchmarks/reindex.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -71,9 +71,9 @@ class LevelAlign(object):
7171
def setup(self):
7272
self.index = MultiIndex(
7373
levels=[np.arange(10), np.arange(100), np.arange(100)],
74-
labels=[np.arange(10).repeat(10000),
75-
np.tile(np.arange(100).repeat(100), 10),
76-
np.tile(np.tile(np.arange(100), 100), 10)])
74+
codes=[np.arange(10).repeat(10000),
75+
np.tile(np.arange(100).repeat(100), 10),
76+
np.tile(np.tile(np.arange(100), 100), 10)])
7777
self.df = DataFrame(np.random.randn(len(self.index), 4),
7878
index=self.index)
7979
self.df_level = DataFrame(np.random.randn(100, 4),

asv_bench/benchmarks/stat_ops.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,10 @@ class FrameMultiIndexOps(object):
3131

3232
def setup(self, level, op):
3333
levels = [np.arange(10), np.arange(100), np.arange(100)]
34-
labels = [np.arange(10).repeat(10000),
35-
np.tile(np.arange(100).repeat(100), 10),
36-
np.tile(np.tile(np.arange(100), 100), 10)]
37-
index = pd.MultiIndex(levels=levels, labels=labels)
34+
codes = [np.arange(10).repeat(10000),
35+
np.tile(np.arange(100).repeat(100), 10),
36+
np.tile(np.tile(np.arange(100), 100), 10)]
37+
index = pd.MultiIndex(levels=levels, codes=codes)
3838
df = pd.DataFrame(np.random.randn(len(index), 4), index=index)
3939
self.df_func = getattr(df, op)
4040

@@ -67,10 +67,10 @@ class SeriesMultiIndexOps(object):
6767

6868
def setup(self, level, op):
6969
levels = [np.arange(10), np.arange(100), np.arange(100)]
70-
labels = [np.arange(10).repeat(10000),
71-
np.tile(np.arange(100).repeat(100), 10),
72-
np.tile(np.tile(np.arange(100), 100), 10)]
73-
index = pd.MultiIndex(levels=levels, labels=labels)
70+
codes = [np.arange(10).repeat(10000),
71+
np.tile(np.arange(100).repeat(100), 10),
72+
np.tile(np.tile(np.arange(100), 100), 10)]
73+
index = pd.MultiIndex(levels=levels, codes=codes)
7474
s = pd.Series(np.random.randn(len(index)), index=index)
7575
self.s_func = getattr(s, op)
7676

doc/source/advanced.rst

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,11 @@ analysis.
4949

5050
See the :ref:`cookbook<cookbook.multi_index>` for some advanced strategies.
5151

52+
.. versionchanged:: 0.24.0
53+
54+
:attr:`MultiIndex.labels` has been renamed to :attr:`MultiIndex.codes`
55+
and :attr:`MultiIndex.set_labels` to :attr:`MultiIndex.set_codes`.
56+
5257
Creating a MultiIndex (hierarchical index) object
5358
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
5459

@@ -469,7 +474,7 @@ values across a level. For instance:
469474
.. ipython:: python
470475
471476
midx = pd.MultiIndex(levels=[['zero', 'one'], ['x', 'y']],
472-
labels=[[1, 1, 0, 0], [1, 0, 1, 0]])
477+
codes=[[1, 1, 0, 0], [1, 0, 1, 0]])
473478
df = pd.DataFrame(np.random.randn(4, 2), index=midx)
474479
df
475480
df2 = df.mean(level=0)

doc/source/api.rst

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1712,7 +1712,7 @@ MultiIndex Attributes
17121712

17131713
MultiIndex.names
17141714
MultiIndex.levels
1715-
MultiIndex.labels
1715+
MultiIndex.codes
17161716
MultiIndex.nlevels
17171717
MultiIndex.levshape
17181718

@@ -1723,7 +1723,7 @@ MultiIndex Components
17231723
:toctree: generated/
17241724

17251725
MultiIndex.set_levels
1726-
MultiIndex.set_labels
1726+
MultiIndex.set_codes
17271727
MultiIndex.to_hierarchical
17281728
MultiIndex.to_flat_index
17291729
MultiIndex.to_frame

doc/source/dsintro.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -961,7 +961,7 @@ From DataFrame using ``to_panel`` method
961961
.. ipython:: python
962962
:okwarning:
963963
964-
midx = pd.MultiIndex(levels=[['one', 'two'], ['x','y']], labels=[[1,1,0,0],[1,0,1,0]])
964+
midx = pd.MultiIndex(levels=[['one', 'two'], ['x','y']], codes=[[1,1,0,0],[1,0,1,0]])
965965
df = pd.DataFrame({'A' : [1, 2, 3, 4], 'B': [5, 6, 7, 8]}, index=midx)
966966
df.to_panel()
967967

doc/source/indexing.rst

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1571,9 +1571,9 @@ Setting metadata
15711571

15721572
Indexes are "mostly immutable", but it is possible to set and change their
15731573
metadata, like the index ``name`` (or, for ``MultiIndex``, ``levels`` and
1574-
``labels``).
1574+
``codes``).
15751575

1576-
You can use the ``rename``, ``set_names``, ``set_levels``, and ``set_labels``
1576+
You can use the ``rename``, ``set_names``, ``set_levels``, and ``set_codes``
15771577
to set these attributes directly. They default to returning a copy; however,
15781578
you can specify ``inplace=True`` to have the data change in place.
15791579

@@ -1588,7 +1588,7 @@ See :ref:`Advanced Indexing <advanced>` for usage of MultiIndexes.
15881588
ind.name = "bob"
15891589
ind
15901590
1591-
``set_names``, ``set_levels``, and ``set_labels`` also take an optional
1591+
``set_names``, ``set_levels``, and ``set_codes`` also take an optional
15921592
`level`` argument
15931593

15941594
.. ipython:: python

doc/source/internals.rst

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -74,23 +74,23 @@ MultiIndex
7474
~~~~~~~~~~
7575

7676
Internally, the ``MultiIndex`` consists of a few things: the **levels**, the
77-
integer **labels**, and the level **names**:
77+
integer **codes** (until version 0.24 named *labels*), and the level **names**:
7878

7979
.. ipython:: python
8080
8181
index = pd.MultiIndex.from_product([range(3), ['one', 'two']],
8282
names=['first', 'second'])
8383
index
8484
index.levels
85-
index.labels
85+
index.codes
8686
index.names
8787
88-
You can probably guess that the labels determine which unique element is
88+
You can probably guess that the codes determine which unique element is
8989
identified with that location at each layer of the index. It's important to
90-
note that sortedness is determined **solely** from the integer labels and does
90+
note that sortedness is determined **solely** from the integer codes and does
9191
not check (or care) whether the levels themselves are sorted. Fortunately, the
9292
constructors ``from_tuples`` and ``from_arrays`` ensure that this is true, but
93-
if you compute the levels and labels yourself, please be careful.
93+
if you compute the levels and codes yourself, please be careful.
9494

9595
Values
9696
~~~~~~

0 commit comments

Comments
 (0)