Regression: pandas 0.10 fails to read an excel file that pandas 0.9 can read · Issue #2651 · pandas-dev/pandas (original) (raw)

  fname = sys.argv[1]                                                            
  xlsx = pd.ExcelFile(fname)                                                     
  sheet = xlsx.sheet_names[0]                                                    

  # this works in pandas 0.9, fails in pandas 0.10.0                             
 df = xlsx.parse(sheet, index_col=[1, 2])                                                                                                                                                                                                                                                                              
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
/home/vagrant/.virtualenvs/foo/local/lib/python2.7/site-packages/IPython/utils/py3compat.pyc in execfile(fname, *where)
    176             else:
    177                 filename = fname
--> 178             __builtin__.execfile(filename, *where)

/tmp/X/pandas_error_test.py in <module>()
     15 
     16 if __name__ == '__main__':
---> 17     main()

/tmp/X/pandas_error_test.py in main(files)
     11 
     12     # this works in pandas 0.9, fails in pandas 0.10.0
---> 13     df = xlsx.parse(sheet, index_col=[1, 2])
     14 
     15 

/home/vagrant/.virtualenvs/foo/local/lib/python2.7/site-packages/pandas/io/parsers.pyc in parse(self, sheetname, header, skiprows, skip_footer, index_col, parse_cols, parse_dates, date_parser, na_values, thousands, chunksize, **kwds)
   1866                                      thousands=thousands,
   1867                                      chunksize=chunksize,
-> 1868                                      skip_footer=skip_footer)
   1869 
   1870     def _should_parse(self, i, parse_cols):

/home/vagrant/.virtualenvs/foo/local/lib/python2.7/site-packages/pandas/io/parsers.pyc in _parse_xlsx(self, sheetname, header, skiprows, skip_footer, index_col, has_index_names, parse_cols, parse_dates, date_parser, na_values, thousands, chunksize)
   1934                             chunksize=chunksize)
   1935 
-> 1936         return parser.read()
   1937 
   1938     def _parse_xls(self, sheetname, header=0, skiprows=None,

/home/vagrant/.virtualenvs/foo/local/lib/python2.7/site-packages/pandas/io/parsers.pyc in read(self, nrows)
    622             #     self._engine.set_error_bad_lines(False)
    623 
--> 624         ret = self._engine.read(nrows)
    625 
    626         if self.options.get('as_recarray'):

/home/vagrant/.virtualenvs/foo/local/lib/python2.7/site-packages/pandas/io/parsers.pyc in read(self, rows)
   1245             content = content[1:]
   1246 
-> 1247         alldata = self._rows_to_cols(content)
   1248         data = self._exclude_implicit_index(alldata)
   1249 

/home/vagrant/.virtualenvs/foo/local/lib/python2.7/site-packages/pandas/io/parsers.pyc in _rows_to_cols(self, content)
   1461             msg = ('Expected %d fields in line %d, saw %d' %
   1462                    (col_len, row_num + 1, zip_len))
-> 1463             raise ValueError(msg)
   1464 
   1465         return zipped_content

ValueError: Expected 10 fields in line 2, saw 11

I suspect a similar error happened when building the docs on the pandas site. See:

And search for "expected", and you'll see a similar error is being triggered. See screenshot for details.
Screen Shot 2013-01-07 at 2 10 20 PM

I haven't attached the file, as it contains a client's data.