We've been bitten multiple times by astropy.table.Table.read treating blank strings as masked quantities instead of just blank strings, e.g. #2489. Update all cases of Table.read of FITS files with desispec.io.read_table which uses fitsio for the underlying read, while still propagating the header and returning a Table object, without doing any masking.
Be careful to not update cases of reading ascii tables, or otherwise update desispec.io.read_table to fall back to Table.read and undo the masking.