Skip to content

Commit d8e01c4

Browse files
topper-123No-Stream
authored andcommitted
DOC/TST: Add examples to MultiIndex.get_level_values + related changes (pandas-dev#17414)
1 parent 88d94e8 commit d8e01c4

File tree

3 files changed

+37
-4
lines changed

3 files changed

+37
-4
lines changed

pandas/core/indexes/base.py

+10-2
Original file line numberDiff line numberDiff line change
@@ -2529,15 +2529,23 @@ 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 str
2537+
``level`` is either the integer position of the level in the
2538+
MultiIndex, or the name of the level.
25372539
25382540
Returns
25392541
-------
25402542
values : Index
2543+
``self``, as there is only one level in the Index.
2544+
2545+
See also
2546+
---------
2547+
pandas.MultiIndex.get_level_values : get values for a level of a
2548+
MultiIndex
25412549
"""
25422550

25432551
self._validate_index_level(level)

pandas/core/indexes/multi.py

+21-2
Original file line numberDiff line numberDiff line change
@@ -882,15 +882,34 @@ 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
----------
889-
level : int or level name
889+
level : int or str
890+
``level`` is either the integer position of the level in the
891+
MultiIndex, or the name of the level.
890892
891893
Returns
892894
-------
893895
values : Index
896+
``values`` is a level of this MultiIndex converted to
897+
a single :class:`Index` (or subclass thereof).
898+
899+
Examples
900+
---------
901+
902+
Create a MultiIndex:
903+
904+
>>> mi = pd.MultiIndex.from_arrays((list('abc'), list('def')))
905+
>>> mi.names = ['level_1', 'level_2']
906+
907+
Get level values by supplying level as either integer or name:
908+
909+
>>> mi.get_level_values(0)
910+
Index(['a', 'b', 'c'], dtype='object', name='level_1')
911+
>>> mi.get_level_values('level_2')
912+
Index(['d', 'e', 'f'], dtype='object', name='level_2')
894913
"""
895914
level = self._get_level_number(level)
896915
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 for name (GH 17414)
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)