Skip to content

Commit f1fee8f

Browse files
committed
ENH: add get_level_values method and tests, address GH #188
1 parent 191200f commit f1fee8f

File tree

3 files changed

+32
-0
lines changed

3 files changed

+32
-0
lines changed

RELEASE.rst

+10
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ This is an incremental bug fix and performance enhancement release
2222
substantial speed increases
2323
- Added `is_monotonic` property to `Index` classes with associated Cython
2424
code to evaluate the monotonicity of the `Index` values
25+
- Add method `get_level_values` to `MultiIndex`
2526

2627
**Improvements to existing features**
2728

@@ -35,6 +36,9 @@ This is an incremental bug fix and performance enhancement release
3536
created. Substantial performance increases result (GH #176)
3637
- Substantially improved performance of generic `Index.intersection` and
3738
`Index.union`
39+
- Improved performance of `DateRange.union` with overlapping ranges and
40+
non-cacheable offsets (like Minute). Implemented analogous fast
41+
`DateRange.intersection` for overlapping ranges.
3842
- Implemented `BlockManager.take` resulting in significantly faster `take`
3943
performance on mixed-type `DataFrame` objects (GH #104)
4044
- Improved performance of `Series.sort_index`
@@ -56,6 +60,12 @@ This is an incremental bug fix and performance enhancement release
5660
- Finish implementation of as_index=False in groupby for DataFrame
5761
aggregation (GH #181)
5862

63+
Thanks
64+
------
65+
66+
- Uri Laserson
67+
- Scott Sinclair
68+
5969
pandas 0.4.1
6070
============
6171

pandas/core/index.py

+17
Original file line numberDiff line numberDiff line change
@@ -779,6 +779,23 @@ def values(self):
779779
result[:] = list(self)
780780
return result
781781

782+
def get_level_values(self, level):
783+
"""
784+
Return vector of label values for requested level, equal to the length
785+
of the index
786+
787+
Parameters
788+
----------
789+
level : int
790+
791+
Returns
792+
-------
793+
values : ndarray
794+
"""
795+
unique_vals = self.levels[level].values
796+
labels = self.labels[level]
797+
return unique_vals.take(labels)
798+
782799
def __contains__(self, key):
783800
try:
784801
label_key = self._get_label_key(key)

pandas/tests/test_index.py

+5
Original file line numberDiff line numberDiff line change
@@ -335,6 +335,11 @@ def test_from_arrays(self):
335335
result = MultiIndex.from_arrays(arrays)
336336
self.assertEquals(list(result), list(self.index))
337337

338+
def test_get_level_values(self):
339+
result = self.index.get_level_values(0)
340+
expected = ['foo', 'foo', 'bar', 'baz', 'qux', 'qux']
341+
self.assert_(np.array_equal(result, expected))
342+
338343
def test_nlevels(self):
339344
self.assertEquals(self.index.nlevels, 2)
340345

0 commit comments

Comments
 (0)