@@ -865,47 +865,43 @@ def test_from_tuples_different_lengths_gh60695():
865
865
866
866
GH#60695
867
867
"""
868
- # Test case 1: Original issue example
868
+ # Test case 1: Original issue example with string values
869
869
tuples = [("l1" ,), ("l1" , "l2" )]
870
870
result = pd .MultiIndex .from_tuples (tuples )
871
871
expected = pd .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 construction 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 = pd .MultiIndex .from_tuples ([("l1" , np .nan ), ("l1" , "l2" )])
879
879
)
880
- tm .assert_series_equal (s , expected )
880
+ tm .assert_series_equal (s , expected , check_index_type = True )
881
881
882
- # Test case 3: Multiple levels with None
883
- data = {(1 , 1 , None ): - 1.0 }
884
- result = pd .Series (data )
885
- expected = pd .Series (
886
- - 1.0 ,
887
- index = pd .MultiIndex .from_tuples ([(1 , 1 , np .nan )]),
888
- )
889
- tm .assert_series_equal (result , expected )
882
+ # Test case 3: Handle numeric values
883
+ tuples = [(1 ,), (1 , 2 )]
884
+ result = pd .MultiIndex .from_tuples (tuples )
885
+ expected = pd .MultiIndex .from_tuples ([(1 , np .nan ), (1 , 2 )])
886
+ tm .assert_index_equal (result , expected , exact = True )
890
887
891
- # Test case 4: Mixed length tuples
892
- tuples = [("a" , ), ("b" , "c" ), ("d" , "e " , "f " )]
888
+ # Test case 4: Mixed types (strings and integers)
889
+ tuples = [(1 , "a" ), (1 , ), (2 , "b " , "c " )]
893
890
result = pd .MultiIndex .from_tuples (tuples )
894
891
expected = pd .MultiIndex .from_tuples ([
895
- ("a" , np . nan , np .nan ),
896
- ("b" , "c" , np .nan ),
897
- ("d" , "e " , "f " )
892
+ (1 , "a" , np .nan ),
893
+ (1 , np . nan , np .nan ),
894
+ (2 , "b " , "c " )
898
895
])
899
- tm .assert_index_equal (result , expected )
896
+ tm .assert_index_equal (result , expected , exact = True )
900
897
901
- # Test case 5: DataFrame with tuple index
902
- df = pd .DataFrame (
903
- {"col" : ["v1" , "v2" ]},
904
- index = pd .MultiIndex .from_tuples ([("l1" ,), ("l1" , "l2" )])
905
- )
906
- expected_index = pd .MultiIndex .from_tuples ([("l1" , np .nan ), ("l1" , "l2" )])
907
- expected_df = pd .DataFrame (
908
- {"col" : ["v1" , "v2" ]},
909
- index = expected_index
910
- )
911
- tm .assert_frame_equal (df , expected_df )
898
+ # Test case 5: Empty tuples
899
+ tuples = []
900
+ with pytest .raises (TypeError , match = "Cannot infer number of levels" ):
901
+ pd .MultiIndex .from_tuples (tuples )
902
+
903
+ # Test case 6: Single level consistency
904
+ tuples = [("a" ,)]
905
+ result = pd .MultiIndex .from_tuples (tuples )
906
+ expected = pd .MultiIndex .from_tuples ([("a" ,)])
907
+ tm .assert_index_equal (result , expected , exact = True )
0 commit comments