17
17
CategoricalIndex , DatetimeIndex , TimedeltaIndex , PeriodIndex )
18
18
from pandas .core .index import InvalidIndexError , NumericIndex
19
19
from pandas .util .testing import (assert_almost_equal , assertRaisesRegexp ,
20
- assert_copy )
20
+ assert_copy , assert_frame_equal )
21
21
from pandas import compat
22
22
from pandas .compat import long
23
23
@@ -603,6 +603,15 @@ def test_shift(self):
603
603
shifted .name = 'shifted'
604
604
self .assertEqual (shifted .name , shifted .shift (1 , 'D' ).name )
605
605
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
+
606
615
def test_intersection (self ):
607
616
first = self .strIndex [:20 ]
608
617
second = self .strIndex [:10 ]
@@ -627,7 +636,7 @@ def test_intersection(self):
627
636
628
637
# if target name is different, it will be reset
629
638
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' )
631
640
result3 = idx1 .intersection (idx3 )
632
641
self .assertTrue (result3 .equals (expected3 ))
633
642
self .assertEqual (result3 .name , expected3 .name )
@@ -677,9 +686,10 @@ def test_union(self):
677
686
union = first .union (second )
678
687
self .assertEqual (union .name , 'A' )
679
688
689
+ #preserve name if different GH 9862
680
690
second .name = 'B'
681
691
union = first .union (second )
682
- self .assertIsNone ( union .name )
692
+ self .assertEquals ( 'A' , union .name )
683
693
684
694
def test_add (self ):
685
695
0 commit comments