@@ -1657,19 +1657,20 @@ def check(df):
1657
1657
for i in range (len (df .columns )):
1658
1658
df .iloc [:, i ]
1659
1659
1660
- # allow single nans to succeed
1661
1660
indexer = np .arange (len (df .columns ))[isna (df .columns )]
1662
1661
1663
- if len (indexer ) == 1 :
1662
+ if len (indexer ) == 0 :
1663
+ def f ():
1664
+ df .loc [:, np .nan ]
1665
+ pytest .raises (TypeError , f )
1666
+ elif len (indexer ) == 1 :
1664
1667
tm .assert_series_equal (df .iloc [:, indexer [0 ]],
1665
1668
df .loc [:, np .nan ])
1666
1669
1667
- # multiple nans should fail
1670
+ # multiple nans should result in DataFrame
1668
1671
else :
1669
-
1670
- def f ():
1671
- df .loc [:, np .nan ]
1672
- pytest .raises (TypeError , f )
1672
+ tm .assert_frame_equal (df .iloc [:, indexer ],
1673
+ df .loc [:, np .nan ])
1673
1674
1674
1675
df = DataFrame ([[1 , 2 , 3 ], [4 , 5 , 6 ]], index = [1 , np .nan ])
1675
1676
check (df )
@@ -1685,6 +1686,11 @@ def f():
1685
1686
columns = [np .nan , 1.1 , 2.2 , np .nan ])
1686
1687
check (df )
1687
1688
1689
+ # GH 21428 (non-unique columns)
1690
+ df = DataFrame ([[0.0 , 1 , 2 , 3.0 ], [4 , 5 , 6 , 7 ]],
1691
+ columns = [np .nan , 1 , 2 , 2 ])
1692
+ check (df )
1693
+
1688
1694
def test_constructor_lists_to_object_dtype (self ):
1689
1695
# from #1074
1690
1696
d = DataFrame ({'a' : [np .nan , False ]})
0 commit comments