Skip to content

Commit b18a142

Browse files
authored
CLN: Make iterators lazier (#58200)
1 parent 906a78a commit b18a142

File tree

5 files changed

+8
-9
lines changed

5 files changed

+8
-9
lines changed

pandas/core/apply.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -1710,9 +1710,9 @@ def normalize_keyword_aggregation(
17101710
# TODO: aggspec type: typing.Dict[str, List[AggScalar]]
17111711
aggspec = defaultdict(list)
17121712
order = []
1713-
columns, pairs = list(zip(*kwargs.items()))
1713+
columns = tuple(kwargs.keys())
17141714

1715-
for column, aggfunc in pairs:
1715+
for column, aggfunc in kwargs.values():
17161716
aggspec[column].append(aggfunc)
17171717
order.append((column, com.get_callable_name(aggfunc) or aggfunc))
17181718

pandas/core/frame.py

+3-2
Original file line numberDiff line numberDiff line change
@@ -6168,12 +6168,13 @@ class max type
61686168
names = self.index._get_default_index_names(names, default)
61696169

61706170
if isinstance(self.index, MultiIndex):
6171-
to_insert = zip(self.index.levels, self.index.codes)
6171+
to_insert = zip(reversed(self.index.levels), reversed(self.index.codes))
61726172
else:
61736173
to_insert = ((self.index, None),)
61746174

61756175
multi_col = isinstance(self.columns, MultiIndex)
6176-
for i, (lev, lab) in reversed(list(enumerate(to_insert))):
6176+
for j, (lev, lab) in enumerate(to_insert, start=1):
6177+
i = self.index.nlevels - j
61776178
if level is not None and i not in level:
61786179
continue
61796180
name = names[i]

pandas/core/groupby/ops.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -706,7 +706,7 @@ def groups(self) -> dict[Hashable, Index]:
706706
return self.groupings[0].groups
707707
result_index, ids = self.result_index_and_ids
708708
values = result_index._values
709-
categories = Categorical(ids, categories=np.arange(len(result_index)))
709+
categories = Categorical(ids, categories=range(len(result_index)))
710710
result = {
711711
# mypy is not aware that group has to be an integer
712712
values[group]: self.axis.take(axis_ilocs) # type: ignore[call-overload]

pandas/core/indexing.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -899,7 +899,7 @@ def __setitem__(self, key, value) -> None:
899899

900900
check_dict_or_set_indexers(key)
901901
if isinstance(key, tuple):
902-
key = tuple(list(x) if is_iterator(x) else x for x in key)
902+
key = (list(x) if is_iterator(x) else x for x in key)
903903
key = tuple(com.apply_if_callable(x, self.obj) for x in key)
904904
else:
905905
maybe_callable = com.apply_if_callable(key, self.obj)
@@ -1177,7 +1177,7 @@ def _check_deprecated_callable_usage(self, key: Any, maybe_callable: T) -> T:
11771177
def __getitem__(self, key):
11781178
check_dict_or_set_indexers(key)
11791179
if type(key) is tuple:
1180-
key = tuple(list(x) if is_iterator(x) else x for x in key)
1180+
key = (list(x) if is_iterator(x) else x for x in key)
11811181
key = tuple(com.apply_if_callable(x, self.obj) for x in key)
11821182
if self._is_scalar_access(key):
11831183
return self.obj._get_value(*key, takeable=self._takeable)

pandas/core/sorting.py

-2
Original file line numberDiff line numberDiff line change
@@ -172,8 +172,6 @@ def maybe_lift(lab, size: int) -> tuple[np.ndarray, int]:
172172
for i, (lab, size) in enumerate(zip(labels, shape)):
173173
labels[i], lshape[i] = maybe_lift(lab, size)
174174

175-
labels = list(labels)
176-
177175
# Iteratively process all the labels in chunks sized so less
178176
# than lib.i8max unique int ids will be required for each chunk
179177
while True:

0 commit comments

Comments
 (0)