Skip to content

Commit 67aa5c8

Browse files
committed
Merge pull request #8544 from mtkni/master
PERF: Performance improvement for MultiIndexes with a DatetimeIndex levels
2 parents f5fe192 + 2c4dc5c commit 67aa5c8

File tree

3 files changed

+17
-2
lines changed

3 files changed

+17
-2
lines changed

doc/source/v0.15.0.txt

+1
Original file line numberDiff line numberDiff line change
@@ -932,6 +932,7 @@ Performance
932932
- Performance improvement in writing to sql (``to_sql``) of up to 50% (:issue:`8208`).
933933
- Performance benchmarking of groupby for large value of ngroups (:issue:`6787`)
934934
- Performance improvement in ``CustomBusinessDay``, ``CustomBusinessMonth`` (:issue:`8236`)
935+
- Performance improvement for ``MultiIndex.values`` for multi-level indexes containing datetimes (:issue:`8543`)
935936

936937

937938

pandas/core/index.py

+3-2
Original file line numberDiff line numberDiff line change
@@ -2937,10 +2937,11 @@ def values(self):
29372937

29382938
values = []
29392939
for lev, lab in zip(self.levels, self.labels):
2940-
taken = com.take_1d(lev.values, lab)
2940+
lev_values = lev.values
29412941
# Need to box timestamps, etc.
29422942
if hasattr(lev, '_box_values'):
2943-
taken = lev._box_values(taken)
2943+
lev_values = lev._box_values(lev_values)
2944+
taken = com.take_1d(lev_values, lab)
29442945
values.append(taken)
29452946

29462947
self._tuples = lib.fast_zip(values)

vb_suite/index_object.py

+13
Original file line numberDiff line numberDiff line change
@@ -117,3 +117,16 @@
117117
multiindex_from_product = Benchmark('MultiIndex.from_product(iterables)',
118118
setup, name='multiindex_from_product',
119119
start_date=datetime(2014, 6, 30))
120+
121+
#----------------------------------------------------------------------
122+
# MultiIndex with DatetimeIndex level
123+
124+
setup = common_setup + """
125+
level1 = range(1000)
126+
level2 = date_range(start='1/1/2012', periods=10)
127+
"""
128+
129+
multiindex_with_datetime_level = \
130+
Benchmark("MultiIndex.from_product([level1, level2]).values", setup,
131+
name='multiindex_with_datetime_level',
132+
start_date=datetime(2014, 10, 11))

0 commit comments

Comments
 (0)