1717 CategoricalIndex , DatetimeIndex , TimedeltaIndex , PeriodIndex )
1818from pandas .core .index import InvalidIndexError , NumericIndex
1919from pandas .util .testing import (assert_almost_equal , assertRaisesRegexp ,
20- assert_copy )
20+ assert_copy , assert_frame_equal )
2121from pandas import compat
2222from pandas .compat import long
2323
@@ -603,6 +603,15 @@ def test_shift(self):
603603 shifted .name = 'shifted'
604604 self .assertEqual (shifted .name , shifted .shift (1 , 'D' ).name )
605605
606+ def test_intersection_preserves_name (self ):
607+ #GH 9943
608+ df = pd .DataFrame ([np .nan , np .nan ], columns = ['tags' ], index = pd .Int64Index ([4815961 , 4815962 ], dtype = 'int64' , name = 'id' ))
609+ assert str (df ) == ' tags\n id \n 4815961 NaN\n 4815962 NaN'
610+ L = [4815962 ]
611+ assert list (L ) == list (df .index .intersection (L ))
612+ assert df .ix [L ].tags .index .name == df .ix [df .index .intersection (L )].tags .index .name
613+ assert_frame_equal (df .ix [L ], df .ix [df .index .intersection (L )])
614+
606615 def test_intersection (self ):
607616 first = self .strIndex [:20 ]
608617 second = self .strIndex [:10 ]
@@ -627,7 +636,7 @@ def test_intersection(self):
627636
628637 # if target name is different, it will be reset
629638 idx3 = Index ([3 , 4 , 5 , 6 , 7 ], name = 'other' )
630- expected3 = Index ([3 , 4 , 5 ], name = None )
639+ expected3 = Index ([3 , 4 , 5 ], name = 'idx' )
631640 result3 = idx1 .intersection (idx3 )
632641 self .assertTrue (result3 .equals (expected3 ))
633642 self .assertEqual (result3 .name , expected3 .name )
@@ -677,9 +686,10 @@ def test_union(self):
677686 union = first .union (second )
678687 self .assertEqual (union .name , 'A' )
679688
689+ #preserve name if different GH 9862
680690 second .name = 'B'
681691 union = first .union (second )
682- self .assertIsNone ( union .name )
692+ self .assertEquals ( 'A' , union .name )
683693
684694 def test_add (self ):
685695
0 commit comments