@@ -827,10 +827,10 @@ def _parse_sheet(
827
827
elif is_integer (skiprows ):
828
828
ixmap = range (skiprows , len (data ))
829
829
elif is_list_like (skiprows ):
830
- skiprows = set (skiprows )
831
- ixmap = [ ix for ix , _ in enumerate (data ) if ix not in skiprows ]
830
+ skiprows_set = set (skiprows )
831
+ ixmap = list ( ix for ix , _ in enumerate (data ) if ix not in skiprows_set )
832
832
elif callable (skiprows ):
833
- ixmap = [ ix for ix , _ in enumerate (data ) if not skiprows (ix )]
833
+ ixmap = list ( ix for ix , _ in enumerate (data ) if not skiprows (ix ))
834
834
else :
835
835
raise ValueError (
836
836
"skiprows must be an integer or a list of integers"
@@ -844,23 +844,24 @@ def _parse_sheet(
844
844
elif isinstance (index_col , str ):
845
845
index_col_set = set ()
846
846
index_col_has_names = True
847
- elif is_integer (index_col ):
847
+ elif isinstance (index_col , int ):
848
848
index_col_set = {index_col }
849
849
elif is_list_like (index_col ):
850
- index_col_set = set (index_col )
850
+ index_col_set = set (cast ( Sequence [ int ], index_col ) )
851
851
else :
852
852
raise ValueError (
853
853
"index_col must be a string, an integer or a list of integers"
854
854
)
855
855
has_index = len (index_col_set ) > 0
856
856
has_index_names = False
857
857
858
+ header_list : list [int ]
858
859
if header is None :
859
860
header_list = []
860
861
elif is_integer (header ):
861
862
header_list = [header ]
862
863
elif is_list_like (header ):
863
- header_list = header
864
+ header_list = cast ( Sequence [ int ], header )
864
865
else :
865
866
raise ValueError (
866
867
"header must be an integer or a list of integers"
@@ -889,15 +890,16 @@ def _parse_sheet(
889
890
890
891
# Forward fill and pull out names for MultiIndex column
891
892
control_row = [True ] * len (data [0 ])
892
- for row in header :
893
+ for row in header_list :
893
894
row1 = ixmap [row ]
894
895
data [row1 ], control_row = fill_mi_header (data [row1 ],
895
896
control_row )
896
897
897
898
if has_index :
898
899
header_name , _ = pop_header_name (data [row1 ],
899
900
index_col )
900
- header_names .append (header_name )
901
+ if header_name :
902
+ header_names .append (header_name )
901
903
902
904
# If there is a MultiIndex header and an index then
903
905
# there may also be a row containing just the index
0 commit comments