'Set the fill values of the individual cols based on fill_values of BaseData
fill values has the following form:
<fill_spec> = (<bad_value>, <fill_value>, <optional col_name>...)
fill_values = <fill_spec> or list of <fill_spec>\'s'

def _set_fill_values(self, cols):

    if self.fill_values:
        for col in cols:
            if (not hasattr(col, 'fill_values')):
                col.fill_values = {}
        with suppress(TypeError):
            (self.fill_values[0] + '')
            self.fill_values = [self.fill_values]
        colnames = set(self.header.colnames)
        if (self.fill_include_names is not None):
            colnames.intersection_update(self.fill_include_names)
        if (self.fill_exclude_names is not None):
            colnames.difference_update(self.fill_exclude_names)
        for replacement in reversed(self.fill_values):
            if (len(replacement) < 2):
                raise ValueError('Format    of    fill_values    must    be    (<bad>,    <fill>,    <optional    col1>,    ...)')
            elif (len(replacement) == 2):
                affect_cols = colnames
            else:
                affect_cols = replacement[2:]
            for (i, key) in ((i, x) for (i, x) in enumerate(self.header.colnames) if (x in affect_cols)):
                cols[i].fill_values[replacement[0]] = str(replacement[1])
