Skip to content

Commit 630b664

Browse files
author
tp
committed
Add examples to MultiIndex.get_level_values + related changes
1 parent 062f6f1 commit 630b664

File tree

3 files changed

+33
-4
lines changed

3 files changed

+33
-4
lines changed

pandas/core/indexes/base.py

+8-3
Original file line numberDiff line numberDiff line change
@@ -2529,15 +2529,20 @@ def set_value(self, arr, key, value):
25292529
def _get_level_values(self, level):
25302530
"""
25312531
Return an Index of values for requested level, equal to the length
2532-
of the index
2532+
of the index.
25332533
25342534
Parameters
25352535
----------
2536-
level : int
2536+
level : int or level name
25372537
25382538
Returns
25392539
-------
2540-
values : Index
2540+
self : Index
2541+
2542+
See also
2543+
---------
2544+
pandas.MultiIndex.get_level_values : get values for a level of a
2545+
MultiIndex
25412546
"""
25422547

25432548
self._validate_index_level(level)

pandas/core/indexes/multi.py

+19-1
Original file line numberDiff line numberDiff line change
@@ -882,7 +882,7 @@ def _get_level_values(self, level):
882882
def get_level_values(self, level):
883883
"""
884884
Return vector of label values for requested level,
885-
equal to the length of the index
885+
equal to the length of the index.
886886
887887
Parameters
888888
----------
@@ -891,6 +891,24 @@ def get_level_values(self, level):
891891
Returns
892892
-------
893893
values : Index
894+
895+
Examples
896+
---------
897+
898+
Create a MultiIndex:
899+
900+
>>> i1 = pd.Index(list('abc'), name='level_1')
901+
>>> i2 = pd.CategoricalIndex(list('def'), name='level_2')
902+
>>> mi = pd.MultiIndex.from_arrays((i1, i2))
903+
904+
Get level values by supplying level as either integer or name:
905+
906+
>>> mi.get_level_values(1)
907+
CategoricalIndex(['d', 'e', 'f'], categories=['d', 'e', 'f'],
908+
ordered=False, name='level_2',
909+
dtype='category')
910+
>>> mi.get_level_values('level_1')
911+
Index(['a', 'b', 'c'], dtype='object', name='level_1')
894912
"""
895913
level = self._get_level_number(level)
896914
values = self._get_level_values(level)

pandas/tests/indexes/test_base.py

+6
Original file line numberDiff line numberDiff line change
@@ -1438,6 +1438,12 @@ def test_get_level_values(self):
14381438
result = self.strIndex.get_level_values(0)
14391439
tm.assert_index_equal(result, self.strIndex)
14401440

1441+
# test with name
1442+
index_with_name = self.strIndex.copy()
1443+
index_with_name.name = 'a'
1444+
result = index_with_name.get_level_values('a')
1445+
tm.assert_index_equal(result, index_with_name)
1446+
14411447
def test_slice_keep_name(self):
14421448
idx = Index(['a', 'b'], name='asdf')
14431449
assert idx.name == idx[1:].name

0 commit comments

Comments
 (0)