Skip to content

Commit f4dc43f

Browse files
committed
PERF: frame: avoid unnecessary .values calls
Besides hstacking cols (data copy), this densified SparseDataFrame.
1 parent 9d94a95 commit f4dc43f

File tree

1 file changed

+5
-7
lines changed

1 file changed

+5
-7
lines changed

pandas/core/frame.py

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -781,11 +781,9 @@ def iterrows(self):
781781
iteritems : Iterate over (column name, Series) pairs.
782782
783783
"""
784-
columns = self.columns
785-
klass = self._constructor_sliced
786-
for k, v in zip(self.index, self.values):
787-
s = klass(v, index=columns, name=k)
788-
yield k, s
784+
iloc = self.iloc
785+
for i, k in enumerate(self.index):
786+
yield k, iloc[i]
789787

790788
def itertuples(self, index=True, name="Pandas"):
791789
"""
@@ -2858,7 +2856,7 @@ def _getitem_multilevel(self, key):
28582856
return self._get_item_cache(key)
28592857

28602858
def _getitem_frame(self, key):
2861-
if key.values.size and not is_bool_dtype(key.values):
2859+
if key.size and not key.dtypes.map(is_bool_dtype).all():
28622860
raise ValueError('Must pass DataFrame with boolean values only')
28632861
return self.where(key)
28642862

@@ -3246,7 +3244,7 @@ def _setitem_frame(self, key, value):
32463244
)
32473245
key = self._constructor(key, **self._construct_axes_dict())
32483246

3249-
if key.values.size and not is_bool_dtype(key.values):
3247+
if key.size and not key.dtypes.map(is_bool_dtype).all():
32503248
raise TypeError(
32513249
'Must pass DataFrame or 2-d ndarray with boolean values only'
32523250
)

0 commit comments

Comments
 (0)