@@ -862,62 +862,45 @@ def test_dtype_representation(using_infer_string):
862
862
def test_from_tuples_different_lengths_gh60695 ():
863
863
"""
864
864
Test that MultiIndex.from_tuples properly handles tuples of different lengths.
865
-
865
+
866
866
GH#60695
867
867
"""
868
868
# Test case 1: Basic string tuples
869
869
tuples = [("l1" ,), ("l1" , "l2" )]
870
870
result = MultiIndex .from_tuples (tuples )
871
871
expected = MultiIndex .from_tuples ([("l1" , np .nan ), ("l1" , "l2" )])
872
- tm .assert_index_equal (result , expected )
872
+ tm .assert_index_equal (result , expected , exact = True )
873
873
874
874
# Test case 2: Series with tuple keys
875
875
s = pd .Series ({("l1" ,): "v1" , ("l1" , "l2" ): "v2" })
876
876
expected = pd .Series (
877
877
["v1" , "v2" ],
878
878
index = MultiIndex .from_tuples ([("l1" , np .nan ), ("l1" , "l2" )])
879
879
)
880
- tm .assert_series_equal (s , expected )
881
-
882
- # Test case 3: Numeric tuples
883
- tuples = [(1 ,), (1 , 2 )]
884
- result = MultiIndex .from_tuples (tuples )
885
- expected = MultiIndex .from_tuples ([(1 , np .nan ), (1 , 2 )])
886
- tm .assert_index_equal (result , expected )
887
-
888
- # Test case 4: Mixed types
889
- tuples = [(1 , "a" ), (1 ,), (2 , "b" , "c" )]
890
- result = MultiIndex .from_tuples (tuples )
891
- expected = MultiIndex .from_tuples ([
892
- (1 , "a" , np .nan ),
893
- (1 , np .nan , np .nan ),
894
- (2 , "b" , "c" )
895
- ])
896
- tm .assert_index_equal (result , expected )
880
+ tm .assert_series_equal (s , expected , check_index_type = True )
897
881
898
- # Test case 5 : Empty input with names
882
+ # Test case 3 : Empty input with names
899
883
empty_idx = MultiIndex .from_tuples ([], names = ["a" , "b" ])
884
+ assert isinstance (empty_idx , MultiIndex )
900
885
assert empty_idx .names == ["a" , "b" ]
901
886
assert len (empty_idx ) == 0
902
887
903
- # Test case 6 : Empty input without names
888
+ # Test case 4 : Empty input without names
904
889
with pytest .raises (TypeError , match = "Cannot infer number of levels" ):
905
890
MultiIndex .from_tuples ([])
906
891
907
- # Test case 7 : None values
892
+ # Test case 5 : None values
908
893
tuples = [(1 , None ), (1 , 2 )]
909
894
result = MultiIndex .from_tuples (tuples )
910
895
expected = MultiIndex .from_tuples ([(1 , np .nan ), (1 , 2 )])
911
- tm .assert_index_equal (result , expected )
896
+ tm .assert_index_equal (result , expected , exact = True )
912
897
913
- # Test case 8: DataFrame with tuple index
914
- df = pd .DataFrame (
915
- {"col" : ["v1" , "v2" ]},
916
- index = MultiIndex .from_tuples ([("l1" ,), ("l1" , "l2" )])
917
- )
918
- expected_index = MultiIndex .from_tuples ([("l1" , np .nan ), ("l1" , "l2" )])
919
- expected_df = pd .DataFrame (
920
- {"col" : ["v1" , "v2" ]},
921
- index = expected_index
922
- )
923
- tm .assert_frame_equal (df , expected_df )
898
+ # Test case 6: Mixed types
899
+ tuples = [(1 , "a" ), (1 ,), (2 , "b" , "c" )]
900
+ result = MultiIndex .from_tuples (tuples )
901
+ expected = MultiIndex .from_tuples ([
902
+ (1 , "a" , np .nan ),
903
+ (1 , np .nan , np .nan ),
904
+ (2 , "b" , "c" )
905
+ ])
906
+ tm .assert_index_equal (result , expected , exact = True )
0 commit comments