Skip to content

Commit 1ca6cfc

Browse files
committed
PERF: frame: avoid unnecessary .values calls
Besides hstacking cols (data copy), this densifies SparseDataFrame.
1 parent 3c19232 commit 1ca6cfc

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
@@ -734,11 +734,9 @@ def iterrows(self):
734734
iteritems : Iterate over (column name, Series) pairs.
735735
736736
"""
737-
columns = self.columns
738-
klass = self._constructor_sliced
739-
for k, v in zip(self.index, self.values):
740-
s = klass(v, index=columns, name=k)
741-
yield k, s
737+
iloc = self.iloc
738+
for i, k in enumerate(self.index):
739+
yield k, iloc[i]
742740

743741
def itertuples(self, index=True, name="Pandas"):
744742
"""
@@ -2186,7 +2184,7 @@ def _getitem_multilevel(self, key):
21862184
return self._get_item_cache(key)
21872185

21882186
def _getitem_frame(self, key):
2189-
if key.values.size and not is_bool_dtype(key.values):
2187+
if key.size and not key.dtypes.map(is_bool_dtype).all():
21902188
raise ValueError('Must pass DataFrame with boolean values only')
21912189
return self.where(key)
21922190

@@ -2518,7 +2516,7 @@ def _setitem_array(self, key, value):
25182516
def _setitem_frame(self, key, value):
25192517
# support boolean setting with DataFrame input, e.g.
25202518
# df[df > df2] = 0
2521-
if key.values.size and not is_bool_dtype(key.values):
2519+
if key.size and not key.dtypes.map(is_bool_dtype).all():
25222520
raise TypeError('Must pass DataFrame with boolean values only')
25232521

25242522
self._check_inplace_setting(value)

0 commit comments

Comments
 (0)