@@ -1657,19 +1657,21 @@ 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 :
1664
- tm .assert_series_equal (df .iloc [:, indexer [0 ]],
1665
- df .loc [:, np .nan ])
1666
-
1667
- # multiple nans should fail
1668
- else :
1669
-
1662
+ # No NaN found -> error
1663
+ if len (indexer ) == 0 :
1670
1664
def f ():
1671
1665
df .loc [:, np .nan ]
1672
1666
pytest .raises (TypeError , f )
1667
+ # single nan should result in Series
1668
+ elif len (indexer ) == 1 :
1669
+ tm .assert_series_equal (df .iloc [:, indexer [0 ]],
1670
+ df .loc [:, np .nan ])
1671
+ # multiple nans should result in DataFrame
1672
+ else :
1673
+ tm .assert_frame_equal (df .iloc [:, indexer ],
1674
+ df .loc [:, np .nan ])
1673
1675
1674
1676
df = DataFrame ([[1 , 2 , 3 ], [4 , 5 , 6 ]], index = [1 , np .nan ])
1675
1677
check (df )
@@ -1685,6 +1687,11 @@ def f():
1685
1687
columns = [np .nan , 1.1 , 2.2 , np .nan ])
1686
1688
check (df )
1687
1689
1690
+ # GH 21428 (non-unique columns)
1691
+ df = DataFrame ([[0.0 , 1 , 2 , 3.0 ], [4 , 5 , 6 , 7 ]],
1692
+ columns = [np .nan , 1 , 2 , 2 ])
1693
+ check (df )
1694
+
1688
1695
def test_constructor_lists_to_object_dtype (self ):
1689
1696
# from #1074
1690
1697
d = DataFrame ({'a' : [np .nan , False ]})
0 commit comments