@@ -642,6 +642,8 @@ def test_setitem_clear_caches(self):
642
642
def test_setitem_None (self ):
643
643
# GH #766
644
644
self .frame [None ] = self .frame ['A' ]
645
+ assert_series_equal (self .frame .iloc [:,- 1 ], self .frame ['A' ])
646
+ assert_series_equal (self .frame .loc [:,None ], self .frame ['A' ])
645
647
assert_series_equal (self .frame [None ], self .frame ['A' ])
646
648
repr (self .frame )
647
649
@@ -4475,6 +4477,41 @@ def test_constructor_lists_to_object_dtype(self):
4475
4477
self .assert_ (d ['a' ].dtype == np .object_ )
4476
4478
self .assert_ (d ['a' ][1 ] is False )
4477
4479
4480
+ def test_constructor_with_nas (self ):
4481
+ # GH 5016
4482
+ # na's in indicies
4483
+
4484
+ def check (df ):
4485
+ for i in range (len (df .columns )):
4486
+ df .iloc [:,i ]
4487
+
4488
+ # allow single nans to succeed
4489
+ indexer = np .arange (len (df .columns ))[isnull (df .columns )]
4490
+
4491
+ if len (indexer ) == 1 :
4492
+ assert_series_equal (df .iloc [:,indexer [0 ]],df .loc [:,np .nan ])
4493
+
4494
+
4495
+ # multiple nans should fail
4496
+ else :
4497
+
4498
+ def f ():
4499
+ df .loc [:,np .nan ]
4500
+ self .assertRaises (ValueError , f )
4501
+
4502
+
4503
+ df = DataFrame ([[1 ,2 ,3 ],[4 ,5 ,6 ]], index = [1 ,np .nan ])
4504
+ check (df )
4505
+
4506
+ df = DataFrame ([[1 ,2 ,3 ],[4 ,5 ,6 ]], columns = [1.1 ,2.2 ,np .nan ])
4507
+ check (df )
4508
+
4509
+ df = DataFrame ([[0 ,1 ,2 ,3 ],[4 ,5 ,6 ,7 ]], columns = [np .nan ,1.1 ,2.2 ,np .nan ])
4510
+ check (df )
4511
+
4512
+ df = DataFrame ([[0.0 ,1 ,2 ,3.0 ],[4 ,5 ,6 ,7 ]], columns = [np .nan ,1.1 ,2.2 ,np .nan ])
4513
+ check (df )
4514
+
4478
4515
def test_logical_with_nas (self ):
4479
4516
d = DataFrame ({'a' : [np .nan , False ], 'b' : [True , True ]})
4480
4517
0 commit comments