append a new row to a DataRange

        :param row_key: a string
        :param value_list: a list

def col_append(self, col_key, value_list):
        """
        append a new row to a DataRange

        :param row_key: a string
        :param value_list: a list
        """
        if col_key in self._col_keys:
            raise KeyError('Key %s already exists col keys.' % col_key)
        if not isinstance(value_list, (tuple, list)):
            value_list = [value_list] * len(self._row_keys)
        if not len(value_list) == len(self._row_keys):
            raise ValueError('Length of data to set does not meet expected col length of %i' % len(self._row_keys))
        self._col_keys.append(col_key)
        for r, v in zip(self._row_keys, value_list):
            self[r, col_key] = v