Skip to content

Commit ba7b437

Browse files
committed
BUG: Raise TypeError only if key DataFrame is not empty #10195
1 parent 0aceb38 commit ba7b437

File tree

2 files changed

+19
-1
lines changed

2 files changed

+19
-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 key.values.dtype != np.bool_:
21552155
raise TypeError('Must pass DataFrame with boolean values only')
21562156

21572157
self._check_inplace_setting(value)

pandas/tests/test_frame.py

+18
Original file line numberDiff line numberDiff line change
@@ -794,6 +794,24 @@ 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+
#
799+
df = pd.DataFrame([[2, 2]], index=pd.DatetimeIndex(['2011-01-01']))
800+
df2 = pd.DataFrame([[1, 1]], index=pd.DatetimeIndex(['2011-01-01']))
801+
802+
df[df > df2] = 47
803+
804+
assert np.all(df.values==47)
805+
806+
for dtype in ('float', 'int64'):
807+
for df in [
808+
pd.DataFrame(dtype=dtype),
809+
pd.DataFrame(dtype=dtype, index=[1]),
810+
pd.DataFrame(dtype=dtype, columns=['A']),
811+
]:
812+
df2 = df.copy()
813+
df[df > df2] = 47
814+
797815
def test_delitem_corner(self):
798816
f = self.frame.copy()
799817
del f['D']

0 commit comments

Comments
 (0)