Skip to content

Commit aa21fa4

Browse files
committed
BUG: Any/All sometimes does not return boolean (pandas-dev#12863)
1 parent 52241a7 commit aa21fa4

File tree

2 files changed

+24
-6
lines changed

2 files changed

+24
-6
lines changed

pandas/core/nanops.py

+10-4
Original file line numberDiff line numberDiff line change
@@ -259,14 +259,20 @@ def _wrap_results(result, dtype):
259259

260260

261261
def nanany(values, axis=None, skipna=True):
262+
import pdb; pdb.set_trace()
262263
values, mask, dtype, _ = _get_values(values, skipna, False, copy=skipna)
263-
return values.any(axis)
264-
264+
if is_object_dtype(dtype):
265+
return any(values)
266+
else:
267+
return values.any(axis)
265268

266269
def nanall(values, axis=None, skipna=True):
270+
import pdb; pdb.set_trace()
267271
values, mask, dtype, _ = _get_values(values, skipna, True, copy=skipna)
268-
return values.all(axis)
269-
272+
if is_object_dtype(dtype):
273+
return any(values)
274+
else:
275+
return values.any(axis)
270276

271277
@disallow('M8')
272278
@bottleneck_switch(zero_value=0)

pandas/tests/series/test_analytics.py

+14-2
Original file line numberDiff line numberDiff line change
@@ -596,16 +596,28 @@ def test_all_any(self):
596596

597597
# Alternative types, with implicit 'object' dtype.
598598
s = Series(['abc', True])
599-
self.assertEqual('abc', s.any()) # 'abc' || True => 'abc'
599+
self.assertEqual(True, s.any())
600+
self.assertEqual(True, s.all())
601+
s = Series(['abc', False])
602+
self.assertEqual(True, s.any())
603+
self.assertEqual(False, s.all())
604+
# GH 12863
605+
s = Series(data=list('abcde'), dtype=object)
606+
self.assertTrue(s.any())
607+
self.assertTrue(s.all())
600608

601609
def test_all_any_params(self):
602610
# Check skipna, with implicit 'object' dtype.
603611
s1 = Series([np.nan, True])
604612
s2 = Series([np.nan, False])
605613
self.assertTrue(s1.all(skipna=False)) # nan && True => True
606614
self.assertTrue(s1.all(skipna=True))
607-
self.assertTrue(np.isnan(s2.any(skipna=False))) # nan || False => nan
615+
self.assertTrue(s1.any(skipna=False))
616+
self.assertTrue(s1.any(skipna=True))
608617
self.assertFalse(s2.any(skipna=True))
618+
self.assertTrue(s2.any(skipna=False))
619+
self.assertFalse(s2.all(skipna=True))
620+
self.assertFalse(s2.all(skipna=False))
609621

610622
# Check level.
611623
s = pd.Series([False, False, True, True, False, True],

0 commit comments

Comments
 (0)