@@ -775,16 +775,6 @@ def test_constructor_dict_of_generators(self):
775775 tm .assert_frame_equal (result , expected )
776776
777777 def test_constructor_dict_multiindex (self ):
778- def check (result , expected ):
779- return tm .assert_frame_equal (
780- result ,
781- expected ,
782- check_dtype = True ,
783- check_index_type = True ,
784- check_column_type = True ,
785- check_names = True ,
786- )
787-
788778 d = {
789779 ("a" , "a" ): {("i" , "i" ): 0 , ("i" , "j" ): 1 , ("j" , "i" ): 2 },
790780 ("b" , "a" ): {("i" , "i" ): 6 , ("i" , "j" ): 5 , ("j" , "i" ): 4 },
@@ -796,7 +786,10 @@ def check(result, expected):
796786 [x [1 ] for x in _d ], index = MultiIndex .from_tuples ([x [0 ] for x in _d ])
797787 ).T
798788 expected .index = MultiIndex .from_tuples (expected .index )
799- check (df , expected )
789+ tm .assert_frame_equal (
790+ df ,
791+ expected ,
792+ )
800793
801794 d ["z" ] = {"y" : 123.0 , ("i" , "i" ): 111 , ("i" , "j" ): 111 , ("j" , "i" ): 111 }
802795 _d .insert (0 , ("z" , d ["z" ]))
@@ -806,7 +799,7 @@ def check(result, expected):
806799 expected .index = Index (expected .index , tupleize_cols = False )
807800 df = DataFrame (d )
808801 df = df .reindex (columns = expected .columns , index = expected .index )
809- check (df , expected )
802+ tm . assert_frame_equal (df , expected )
810803
811804 def test_constructor_dict_datetime64_index (self ):
812805 # GH 10160
@@ -2167,44 +2160,38 @@ def test_constructor_series_copy(self, float_frame):
21672160
21682161 assert not (series ["A" ] == 5 ).all ()
21692162
2170- def test_constructor_with_nas (self ):
2163+ @pytest .mark .parametrize (
2164+ "df" ,
2165+ [
2166+ DataFrame ([[1 , 2 , 3 ], [4 , 5 , 6 ]], index = [1 , np .nan ]),
2167+ DataFrame ([[1 , 2 , 3 ], [4 , 5 , 6 ]], columns = [1.1 , 2.2 , np .nan ]),
2168+ DataFrame ([[0 , 1 , 2 , 3 ], [4 , 5 , 6 , 7 ]], columns = [np .nan , 1.1 , 2.2 , np .nan ]),
2169+ DataFrame (
2170+ [[0.0 , 1 , 2 , 3.0 ], [4 , 5 , 6 , 7 ]], columns = [np .nan , 1.1 , 2.2 , np .nan ]
2171+ ),
2172+ DataFrame ([[0.0 , 1 , 2 , 3.0 ], [4 , 5 , 6 , 7 ]], columns = [np .nan , 1 , 2 , 2 ]),
2173+ ],
2174+ )
2175+ def test_constructor_with_nas (self , df ):
21712176 # GH 5016
21722177 # na's in indices
2178+ # GH 21428 (non-unique columns)
21732179
2174- def check (df ):
2175- for i in range (len (df .columns )):
2176- df .iloc [:, i ]
2177-
2178- indexer = np .arange (len (df .columns ))[isna (df .columns )]
2179-
2180- # No NaN found -> error
2181- if len (indexer ) == 0 :
2182- with pytest .raises (KeyError , match = "^nan$" ):
2183- df .loc [:, np .nan ]
2184- # single nan should result in Series
2185- elif len (indexer ) == 1 :
2186- tm .assert_series_equal (df .iloc [:, indexer [0 ]], df .loc [:, np .nan ])
2187- # multiple nans should result in DataFrame
2188- else :
2189- tm .assert_frame_equal (df .iloc [:, indexer ], df .loc [:, np .nan ])
2190-
2191- df = DataFrame ([[1 , 2 , 3 ], [4 , 5 , 6 ]], index = [1 , np .nan ])
2192- check (df )
2193-
2194- df = DataFrame ([[1 , 2 , 3 ], [4 , 5 , 6 ]], columns = [1.1 , 2.2 , np .nan ])
2195- check (df )
2196-
2197- df = DataFrame ([[0 , 1 , 2 , 3 ], [4 , 5 , 6 , 7 ]], columns = [np .nan , 1.1 , 2.2 , np .nan ])
2198- check (df )
2180+ for i in range (len (df .columns )):
2181+ df .iloc [:, i ]
21992182
2200- df = DataFrame (
2201- [[0.0 , 1 , 2 , 3.0 ], [4 , 5 , 6 , 7 ]], columns = [np .nan , 1.1 , 2.2 , np .nan ]
2202- )
2203- check (df )
2183+ indexer = np .arange (len (df .columns ))[isna (df .columns )]
22042184
2205- # GH 21428 (non-unique columns)
2206- df = DataFrame ([[0.0 , 1 , 2 , 3.0 ], [4 , 5 , 6 , 7 ]], columns = [np .nan , 1 , 2 , 2 ])
2207- check (df )
2185+ # No NaN found -> error
2186+ if len (indexer ) == 0 :
2187+ with pytest .raises (KeyError , match = "^nan$" ):
2188+ df .loc [:, np .nan ]
2189+ # single nan should result in Series
2190+ elif len (indexer ) == 1 :
2191+ tm .assert_series_equal (df .iloc [:, indexer [0 ]], df .loc [:, np .nan ])
2192+ # multiple nans should result in DataFrame
2193+ else :
2194+ tm .assert_frame_equal (df .iloc [:, indexer ], df .loc [:, np .nan ])
22082195
22092196 def test_constructor_lists_to_object_dtype (self ):
22102197 # from #1074
0 commit comments