@@ -870,22 +870,49 @@ def test_to_excel_multiindex_nan_label(self, merge_cells, tmp_excel):
870
870
# Test for Issue 11328. If column indices are integers, make
871
871
# sure they are handled correctly for either setting of
872
872
# merge_cells
873
- def test_to_excel_multiindex_cols (self , merge_cells , frame , tmp_excel ):
873
+ def test_to_excel_multiindex_cols (self , merge_cells , tmp_excel ):
874
+ # GH#11328
875
+ frame = DataFrame (
876
+ {
877
+ "A" : [1 , 2 , 3 ],
878
+ "B" : [4 , 5 , 6 ],
879
+ "C" : [7 , 8 , 9 ],
880
+ }
881
+ )
874
882
arrays = np .arange (len (frame .index ) * 2 , dtype = np .int64 ).reshape (2 , - 1 )
875
883
new_index = MultiIndex .from_arrays (arrays , names = ["first" , "second" ])
876
884
frame .index = new_index
877
885
878
- new_cols_index = MultiIndex .from_tuples ([(40 , 1 ), (40 , 2 ), (50 , 1 ), ( 50 , 2 ) ])
886
+ new_cols_index = MultiIndex .from_tuples ([(40 , 1 ), (40 , 2 ), (50 , 1 )])
879
887
frame .columns = new_cols_index
880
- header = [0 , 1 ]
881
-
882
- # round trip
883
888
frame .to_excel (tmp_excel , sheet_name = "test1" , merge_cells = merge_cells )
889
+
890
+ # Check round trip
884
891
with ExcelFile (tmp_excel ) as reader :
885
- df = pd .read_excel (
886
- reader , sheet_name = "test1" , header = header , index_col = [0 , 1 ]
892
+ result = pd .read_excel (
893
+ reader , sheet_name = "test1" , header = [ 0 , 1 ] , index_col = [0 , 1 ]
887
894
)
888
- tm .assert_frame_equal (frame , df )
895
+ tm .assert_frame_equal (result , frame )
896
+
897
+ # GH#60274
898
+ # Check with header/index_col None to determine which cells were merged
899
+ with ExcelFile (tmp_excel ) as reader :
900
+ result = pd .read_excel (
901
+ reader , sheet_name = "test1" , header = None , index_col = None
902
+ )
903
+ expected = DataFrame (
904
+ {
905
+ 0 : [np .nan , np .nan , "first" , 0 , 1 , 2 ],
906
+ 1 : [np .nan , np .nan , "second" , 3 , 4 , 5 ],
907
+ 2 : [40.0 , 1.0 , np .nan , 1.0 , 2.0 , 3.0 ],
908
+ 3 : [np .nan , 2.0 , np .nan , 4.0 , 5.0 , 6.0 ],
909
+ 4 : [50.0 , 1.0 , np .nan , 7.0 , 8.0 , 9.0 ],
910
+ }
911
+ )
912
+ if not merge_cells :
913
+ # MultiIndex column value is repeated
914
+ expected .loc [0 , 3 ] = 40.0
915
+ tm .assert_frame_equal (result , expected )
889
916
890
917
def test_to_excel_multiindex_dates (self , merge_cells , tmp_excel ):
891
918
# try multiindex with dates
0 commit comments