@@ -76,7 +76,7 @@ def read_excel(io, sheetname=0, header=0, skiprows=None, skip_footer=0,
76
76
index_col = None , names = None , parse_cols = None , parse_dates = False ,
77
77
date_parser = None , na_values = None , thousands = None ,
78
78
convert_float = True , has_index_names = None , converters = None ,
79
- engine = None , ** kwds ):
79
+ engine = None , squeeze = False , ** kwds ):
80
80
"""
81
81
Read an Excel table into a pandas DataFrame
82
82
@@ -133,6 +133,8 @@ def read_excel(io, sheetname=0, header=0, skiprows=None, skip_footer=0,
133
133
* If list of ints then indicates list of column numbers to be parsed
134
134
* If string then indicates comma separated list of column names and
135
135
column ranges (e.g. "A:E" or "A,C,E:F")
136
+ squeeze : boolean, default False
137
+ If the parsed data only contains one column then return a Series
136
138
na_values : list-like, default None
137
139
List of additional strings to recognize as NA/NaN
138
140
thousands : str, default None
@@ -171,7 +173,8 @@ def read_excel(io, sheetname=0, header=0, skiprows=None, skip_footer=0,
171
173
index_col = index_col , parse_cols = parse_cols , parse_dates = parse_dates ,
172
174
date_parser = date_parser , na_values = na_values , thousands = thousands ,
173
175
convert_float = convert_float , has_index_names = has_index_names ,
174
- skip_footer = skip_footer , converters = converters , ** kwds )
176
+ skip_footer = skip_footer , converters = converters ,
177
+ squeeze = squeeze , ** kwds )
175
178
176
179
177
180
class ExcelFile (object ):
@@ -227,7 +230,7 @@ def parse(self, sheetname=0, header=0, skiprows=None, skip_footer=0,
227
230
index_col = None , parse_cols = None , parse_dates = False ,
228
231
date_parser = None , na_values = None , thousands = None ,
229
232
convert_float = True , has_index_names = None ,
230
- converters = None , ** kwds ):
233
+ converters = None , squeeze = False , ** kwds ):
231
234
"""
232
235
Parse specified sheet(s) into a DataFrame
233
236
@@ -246,6 +249,7 @@ def parse(self, sheetname=0, header=0, skiprows=None, skip_footer=0,
246
249
skip_footer = skip_footer ,
247
250
convert_float = convert_float ,
248
251
converters = converters ,
252
+ squeeze = squeeze ,
249
253
** kwds )
250
254
251
255
def _should_parse (self , i , parse_cols ):
@@ -285,7 +289,7 @@ def _parse_excel(self, sheetname=0, header=0, skiprows=None, skip_footer=0,
285
289
index_col = None , has_index_names = None , parse_cols = None ,
286
290
parse_dates = False , date_parser = None , na_values = None ,
287
291
thousands = None , convert_float = True ,
288
- verbose = False , ** kwds ):
292
+ verbose = False , squeeze = False , ** kwds ):
289
293
290
294
skipfooter = kwds .pop ('skipfooter' , None )
291
295
if skipfooter is not None :
@@ -452,11 +456,13 @@ def _parse_cell(cell_contents, cell_typ):
452
456
date_parser = date_parser ,
453
457
skiprows = skiprows ,
454
458
skip_footer = skip_footer ,
459
+ squeeze = squeeze ,
455
460
** kwds )
456
461
457
462
output [asheetname ] = parser .read ()
458
- output [asheetname ].columns = output [
459
- asheetname ].columns .set_names (header_names )
463
+ if not squeeze or isinstance (output [asheetname ], DataFrame ):
464
+ output [asheetname ].columns = output [
465
+ asheetname ].columns .set_names (header_names )
460
466
461
467
if ret_dict :
462
468
return output
0 commit comments