@@ -37,6 +37,27 @@ def test_to_frame():
37
37
expected .index = index
38
38
tm .assert_frame_equal (result , expected )
39
39
40
+ # See GH-22580
41
+ index = MultiIndex .from_tuples (tuples )
42
+ result = index .to_frame (index = False , name = ['first' , 'second' ])
43
+ expected = DataFrame (tuples )
44
+ expected .columns = ['first' , 'second' ]
45
+ tm .assert_frame_equal (result , expected )
46
+
47
+ result = index .to_frame (name = ['first' , 'second' ])
48
+ expected .index = index
49
+ expected .columns = ['first' , 'second' ]
50
+ tm .assert_frame_equal (result , expected )
51
+
52
+ msg = "'name' must be a list / sequence of column names."
53
+ with tm .assert_raises_regex (TypeError , msg ):
54
+ index .to_frame (name = 'first' )
55
+
56
+ msg = "'name' should have same length as number of levels on index."
57
+ with tm .assert_raises_regex (ValueError , msg ):
58
+ index .to_frame (name = ['first' ])
59
+
60
+ # Tests for datetime index
40
61
index = MultiIndex .from_product ([range (5 ),
41
62
pd .date_range ('20130101' , periods = 3 )])
42
63
result = index .to_frame (index = False )
@@ -45,12 +66,21 @@ def test_to_frame():
45
66
1 : np .tile (pd .date_range ('20130101' , periods = 3 ), 5 )})
46
67
tm .assert_frame_equal (result , expected )
47
68
48
- index = MultiIndex .from_product ([range (5 ),
49
- pd .date_range ('20130101' , periods = 3 )])
50
69
result = index .to_frame ()
51
70
expected .index = index
52
71
tm .assert_frame_equal (result , expected )
53
72
73
+ # See GH-22580
74
+ result = index .to_frame (index = False , name = ['first' , 'second' ])
75
+ expected = DataFrame (
76
+ {'first' : np .repeat (np .arange (5 , dtype = 'int64' ), 3 ),
77
+ 'second' : np .tile (pd .date_range ('20130101' , periods = 3 ), 5 )})
78
+ tm .assert_frame_equal (result , expected )
79
+
80
+ result = index .to_frame (name = ['first' , 'second' ])
81
+ expected .index = index
82
+ tm .assert_frame_equal (result , expected )
83
+
54
84
55
85
def test_to_hierarchical ():
56
86
index = MultiIndex .from_tuples ([(1 , 'one' ), (1 , 'two' ), (2 , 'one' ), (
0 commit comments