@@ -2879,7 +2879,7 @@ def test_constructor_column_duplicates(self):
28792879 columns = ['b' , 'a' , 'a' ])
28802880
28812881
2882- def test_column_duplicates_operations (self ):
2882+ def test_column_dups_operations (self ):
28832883
28842884 def check (result , expected = None ):
28852885 if expected is not None :
@@ -2973,22 +2973,6 @@ def check(result, expected=None):
29732973 expected = DataFrame ([[1 ,5 ,7. ],[1 ,5 ,7. ],[1 ,5 ,7. ]],columns = ['bar' ,'hello' ,'foo2' ])
29742974 check (df ,expected )
29752975
2976- # reindex
2977- df = DataFrame ([[1 ,5 ,7. ],[1 ,5 ,7. ],[1 ,5 ,7. ]],columns = ['bar' ,'a' ,'a' ])
2978- expected = DataFrame ([[1 ],[1 ],[1 ]],columns = ['bar' ])
2979- result = df .reindex (columns = ['bar' ])
2980- check (result ,expected )
2981-
2982- result1 = DataFrame ([[1 ],[1 ],[1 ]],columns = ['bar' ]).reindex (columns = ['bar' ,'foo' ])
2983- result2 = df .reindex (columns = ['bar' ,'foo' ])
2984- check (result2 ,result1 )
2985-
2986- # drop
2987- df = DataFrame ([[1 ,5 ,7. ],[1 ,5 ,7. ],[1 ,5 ,7. ]],columns = ['bar' ,'a' ,'a' ])
2988- df = df .drop (['a' ],axis = 1 )
2989- expected = DataFrame ([[1 ],[1 ],[1 ]],columns = ['bar' ])
2990- check (df ,expected )
2991-
29922976 # values
29932977 df = DataFrame ([[1 ,2.5 ],[3 ,4.5 ]], index = [1 ,2 ], columns = ['x' ,'x' ])
29942978 result = df .values
@@ -3016,6 +3000,17 @@ def check(result, expected=None):
30163000 columns = ['RT' ,'TClose' ,'TExg' ,'RPT_Date' ,'STK_ID' ,'STK_Name' ,'QT_Close' ]).set_index (['STK_ID' ,'RPT_Date' ],drop = False )
30173001 assert_frame_equal (result ,expected )
30183002
3003+ # reindex is invalid!
3004+ df = DataFrame ([[1 ,5 ,7. ],[1 ,5 ,7. ],[1 ,5 ,7. ]],columns = ['bar' ,'a' ,'a' ])
3005+ self .assertRaises (ValueError , df .reindex , columns = ['bar' ])
3006+ self .assertRaises (ValueError , df .reindex , columns = ['bar' ,'foo' ])
3007+
3008+ # drop
3009+ df = DataFrame ([[1 ,5 ,7. ],[1 ,5 ,7. ],[1 ,5 ,7. ]],columns = ['bar' ,'a' ,'a' ])
3010+ df = df .drop (['a' ],axis = 1 )
3011+ expected = DataFrame ([[1 ],[1 ],[1 ]],columns = ['bar' ])
3012+ check (df ,expected )
3013+
30193014 def test_insert_benchmark (self ):
30203015 # from the vb_suite/frame_methods/frame_insert_columns
30213016 N = 10
@@ -7573,6 +7568,21 @@ def test_reindex_fill_value(self):
75737568 expected = df .reindex (lrange (15 )).fillna (0 )
75747569 assert_frame_equal (result , expected )
75757570
7571+ def test_reindex_dups (self ):
7572+
7573+ # GH4746, reindex on duplicate index error messages
7574+ arr = np .random .randn (10 )
7575+ df = DataFrame (arr ,index = [1 ,2 ,3 ,4 ,5 ,1 ,2 ,3 ,4 ,5 ])
7576+
7577+ # set index is ok
7578+ result = df .copy ()
7579+ result .index = list (range (len (df )))
7580+ expected = DataFrame (arr ,index = list (range (len (df ))))
7581+ assert_frame_equal (result ,expected )
7582+
7583+ # reindex fails
7584+ self .assertRaises (ValueError , df .reindex , index = list (range (len (df ))))
7585+
75767586 def test_align (self ):
75777587
75787588 af , bf = self .frame .align (self .frame )
0 commit comments