Skip to content

Commit b8b3e4c

Browse files
committed
BUG: Raise TypeError only if key DataFrame is not empty pandas-dev#10126
1 parent 0aceb38 commit b8b3e4c

File tree

2 files changed

+13
-1
lines changed

2 files changed

+13
-1
lines changed

pandas/core/frame.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -2151,7 +2151,7 @@ def _setitem_array(self, key, value):
21512151
def _setitem_frame(self, key, value):
21522152
# support boolean setting with DataFrame input, e.g.
21532153
# df[df > df2] = 0
2154-
if key.values.dtype != np.bool_:
2154+
if key.values.size and com.is_bool_dtype(key):
21552155
raise TypeError('Must pass DataFrame with boolean values only')
21562156

21572157
self._check_inplace_setting(value)

pandas/tests/test_frame.py

+12
Original file line numberDiff line numberDiff line change
@@ -794,6 +794,18 @@ def test_setitem_empty(self):
794794
result.loc[result.b.isnull(), 'a'] = result.a
795795
assert_frame_equal(result, df)
796796

797+
def test_setitem_empty_frame_with_boolean(self):
798+
# Test for issue #10126
799+
800+
for dtype in ('float', 'int64'):
801+
for df in [
802+
pd.DataFrame(dtype=dtype),
803+
pd.DataFrame(dtype=dtype, index=[1]),
804+
pd.DataFrame(dtype=dtype, columns=['A']),
805+
]:
806+
df2 = df.copy()
807+
df[df > df2] = 47
808+
797809
def test_delitem_corner(self):
798810
f = self.frame.copy()
799811
del f['D']

0 commit comments

Comments
 (0)