Skip to content

Commit 2abd3b0

Browse files
committed
Merged PR #1073
2 parents e5490ef + de427aa commit 2abd3b0

File tree

6 files changed

+31
-19
lines changed

6 files changed

+31
-19
lines changed

pandas/core/frame.py

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -452,9 +452,12 @@ def shape(self):
452452
#----------------------------------------------------------------------
453453
# Class behavior
454454

455+
@property
456+
def empty(self):
457+
return not (len(self.columns) > 0 and len(self.index) > 0)
458+
455459
def __nonzero__(self):
456-
# e.g. "if frame: ..."
457-
return len(self.columns) > 0 and len(self.index) > 0
460+
raise ValueError("Cannot call bool() on DataFrame.")
458461

459462
def _need_info_repr_(self):
460463
"""
@@ -2681,8 +2684,9 @@ def _combine_match_columns(self, other, func, fill_value=None):
26812684
columns=left.columns, copy=False)
26822685

26832686
def _combine_const(self, other, func):
2684-
if not self:
2687+
if self.empty:
26852688
return self
2689+
26862690
result_values = func(self.values, other)
26872691

26882692
if not isinstance(result_values, np.ndarray):
@@ -2720,10 +2724,10 @@ def combine(self, other, func, fill_value=None):
27202724
-------
27212725
result : DataFrame
27222726
"""
2723-
if not other:
2727+
if other.empty:
27242728
return self.copy()
27252729

2726-
if not self:
2730+
if self.empty:
27272731
return other.copy()
27282732

27292733
this, other = self.align(other, copy=False)

pandas/core/indexing.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -510,7 +510,10 @@ def _is_label_like(key):
510510

511511

512512
def _is_list_like(obj):
513-
return np.iterable(obj) and not isinstance(obj, basestring)
513+
# Consider namedtuples to be not list like as they are useful as indices
514+
return (np.iterable(obj)
515+
and not isinstance(obj, basestring)
516+
and not (isinstance(obj, tuple) and type(obj) is not tuple))
514517

515518

516519
def _need_slice(obj):

pandas/sparse/frame.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -415,7 +415,7 @@ def _combine_frame(self, other, func, fill_value=None, level=None):
415415
if level is not None:
416416
raise NotImplementedError
417417

418-
if not self and not other:
418+
if self.empty and other.empty:
419419
return SparseDataFrame(index=new_index)
420420

421421
new_data = {}

pandas/sparse/tests/test_sparse.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -871,7 +871,7 @@ def _compare_to_dense(a, b, da, db, op):
871871

872872
def test_op_corners(self):
873873
empty = self.empty + self.empty
874-
self.assert_(not empty)
874+
self.assert_(empty.empty)
875875

876876
foo = self.frame + self.empty
877877
self.assert_(isinstance(foo.index, DatetimeIndex))

pandas/stats/plm.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@ def _filter_data(self):
149149
x = data_long.filter(x_names)
150150
y = data_long['__y__']
151151

152-
if self._weights:
152+
if self._weights is not None and not self._weights.empty:
153153
weights = data_long['__weights__']
154154
else:
155155
weights = None

pandas/tests/test_frame.py

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1999,17 +1999,17 @@ def test_get_agg_axis(self):
19991999
self.assertRaises(Exception, self.frame._get_agg_axis, 2)
20002000

20012001
def test_nonzero(self):
2002-
self.assertFalse(self.empty)
2002+
self.assertTrue(self.empty.empty)
20032003

2004-
self.assert_(self.frame)
2005-
self.assert_(self.mixed_frame)
2004+
self.assertFalse(self.frame.empty)
2005+
self.assertFalse(self.mixed_frame.empty)
20062006

20072007
# corner case
20082008
df = DataFrame({'A' : [1., 2., 3.],
20092009
'B' : ['a', 'b', 'c']},
20102010
index=np.arange(3))
20112011
del df['A']
2012-
self.assert_(df)
2012+
self.assertFalse(df.empty)
20132013

20142014
def test_repr(self):
20152015
buf = StringIO()
@@ -2370,7 +2370,7 @@ def test_combineFrame(self):
23702370
self.assert_(np.isnan(empty_plus.values).all())
23712371

23722372
empty_empty = self.empty + self.empty
2373-
self.assert_(not empty_empty)
2373+
self.assertTrue(empty_empty.empty)
23742374

23752375
# out of order
23762376
reverse = self.frame.reindex(columns=self.frame.columns[::-1])
@@ -3403,7 +3403,7 @@ def test_reindex(self):
34033403

34043404
# length zero
34053405
newFrame = self.frame.reindex([])
3406-
self.assert_(not newFrame)
3406+
self.assert_(newFrame.empty)
34073407
self.assertEqual(len(newFrame.columns), len(self.frame.columns))
34083408

34093409
# length zero with columns reindexed with non-empty index
@@ -3458,7 +3458,7 @@ def test_reindex_columns(self):
34583458

34593459
# length zero
34603460
newFrame = self.frame.reindex(columns=[])
3461-
self.assert_(not newFrame)
3461+
self.assert_(newFrame.empty)
34623462

34633463
def test_reindex_fill_value(self):
34643464
df = DataFrame(np.random.randn(10, 4))
@@ -3890,10 +3890,10 @@ def test_apply(self):
38903890

38913891
# empty
38923892
applied = self.empty.apply(np.sqrt)
3893-
self.assert_(not applied)
3893+
self.assert_(applied.empty)
38943894

38953895
applied = self.empty.apply(np.mean)
3896-
self.assert_(not applied)
3896+
self.assert_(applied.empty)
38973897

38983898
no_rows = self.frame[:0]
38993899
result = no_rows.apply(lambda x: x.mean())
@@ -5304,7 +5304,12 @@ def test_index_namedtuple(self):
53045304
idx2 = IndexType("baz", "bof")
53055305
index = Index([idx1, idx2], name="composite_index")
53065306
df = DataFrame([(1, 2), (3, 4)], index=index, columns=["A", "B"])
5307-
self.assertEqual(df.ix[IndexType("foo", "bar")], (1, 2))
5307+
print df.ix[IndexType("foo", "bar")]["A"]
5308+
self.assertEqual(df.ix[IndexType("foo", "bar")]["A"], 1)
5309+
5310+
def test_bool_raises_value_error_1069(self):
5311+
df = DataFrame([1, 2, 3])
5312+
self.failUnlessRaises(ValueError, lambda: bool(df))
53085313

53095314
if __name__ == '__main__':
53105315
# unittest.main()

0 commit comments

Comments
 (0)