Skip to content

Commit 1714f6a

Browse files
mroeschkepmhatre1
authored andcommitted
REF: Don't materialize range if not needed (pandas-dev#57857)
1 parent 1eadbde commit 1714f6a

File tree

6 files changed

+15
-12
lines changed

6 files changed

+15
-12
lines changed

pandas/core/groupby/groupby.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -2686,7 +2686,7 @@ def _value_counts(
26862686
names = result_series.index.names
26872687
# GH#55951 - Temporarily replace names in case they are integers
26882688
result_series.index.names = range(len(names))
2689-
index_level = list(range(len(self._grouper.groupings)))
2689+
index_level = range(len(self._grouper.groupings))
26902690
result_series = result_series.sort_index(
26912691
level=index_level, sort_remaining=False
26922692
)

pandas/core/indexes/multi.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -921,7 +921,7 @@ def _set_levels(
921921

922922
if level is None:
923923
new_levels = tuple(ensure_index(lev, copy=copy)._view() for lev in levels)
924-
level_numbers = list(range(len(new_levels)))
924+
level_numbers: range | list[int] = range(len(new_levels))
925925
else:
926926
level_numbers = [self._get_level_number(lev) for lev in level]
927927
new_levels_list = list(self._levels)
@@ -3014,7 +3014,7 @@ def _maybe_to_slice(loc):
30143014
raise KeyError(key) from err
30153015
except TypeError:
30163016
# e.g. test_partial_slicing_with_multiindex partial string slicing
3017-
loc, _ = self.get_loc_level(key, list(range(self.nlevels)))
3017+
loc, _ = self.get_loc_level(key, range(self.nlevels))
30183018
return loc
30193019

30203020
# -- partial selection or non-unique index
@@ -3101,7 +3101,7 @@ def get_loc_level(self, key, level: IndexLabel = 0, drop_level: bool = True):
31013101
>>> mi.get_loc_level(["b", "e"])
31023102
(1, None)
31033103
"""
3104-
if not isinstance(level, (list, tuple)):
3104+
if not isinstance(level, (range, list, tuple)):
31053105
level = self._get_level_number(level)
31063106
else:
31073107
level = [self._get_level_number(lev) for lev in level]

pandas/core/reshape/pivot.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from __future__ import annotations
22

3+
import itertools
34
from typing import (
45
TYPE_CHECKING,
56
Callable,
@@ -422,7 +423,7 @@ def _all_key(key):
422423
row_margin = row_margin.stack()
423424

424425
# GH#26568. Use names instead of indices in case of numeric names
425-
new_order_indices = [len(cols)] + list(range(len(cols)))
426+
new_order_indices = itertools.chain([len(cols)], range(len(cols)))
426427
new_order_names = [row_margin.index.names[i] for i in new_order_indices]
427428
row_margin.index = row_margin.index.reorder_levels(new_order_names)
428429
else:

pandas/core/sorting.py

+4-4
Original file line numberDiff line numberDiff line change
@@ -523,13 +523,13 @@ def _ensure_key_mapped_multiindex(
523523

524524
if level is not None:
525525
if isinstance(level, (str, int)):
526-
sort_levels = [level]
526+
level_iter = [level]
527527
else:
528-
sort_levels = level
528+
level_iter = level
529529

530-
sort_levels = [index._get_level_number(lev) for lev in sort_levels]
530+
sort_levels: range | set = {index._get_level_number(lev) for lev in level_iter}
531531
else:
532-
sort_levels = list(range(index.nlevels)) # satisfies mypy
532+
sort_levels = range(index.nlevels)
533533

534534
mapped = [
535535
ensure_key_mapped(index._get_level_values(level), key)

pandas/io/common.py

+4-2
Original file line numberDiff line numberDiff line change
@@ -1223,12 +1223,14 @@ def is_potential_multi_index(
12231223
bool : Whether or not columns could become a MultiIndex
12241224
"""
12251225
if index_col is None or isinstance(index_col, bool):
1226-
index_col = []
1226+
index_columns = set()
1227+
else:
1228+
index_columns = set(index_col)
12271229

12281230
return bool(
12291231
len(columns)
12301232
and not isinstance(columns, ABCMultiIndex)
1231-
and all(isinstance(c, tuple) for c in columns if c not in list(index_col))
1233+
and all(isinstance(c, tuple) for c in columns if c not in index_columns)
12321234
)
12331235

12341236

pandas/io/parsers/readers.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1482,7 +1482,7 @@ def _clean_options(
14821482
)
14831483
else:
14841484
if is_integer(skiprows):
1485-
skiprows = list(range(skiprows))
1485+
skiprows = range(skiprows)
14861486
if skiprows is None:
14871487
skiprows = set()
14881488
elif not callable(skiprows):

0 commit comments

Comments
 (0)