def pop_column(self, index=-1):
        """Remove and return row at index (default last).

        Parameters
        ----------
        index : int, str
            index of the column, or the header of the column.
            If index is specified, then normal list rules apply.

        Raises
        ------
        TypeError:
            If index is not an instance of `int`, or `str`.

        IndexError:
            If Table is empty.
        """
        if isinstance(index, int):
            pass
        elif isinstance(index, basestring):
            index = self.get_column_index(index)
        else:
            raise TypeError(("column index must be an integer or a string, "
                             "not {}").format(type(index).__name__))
        if self._column_count == 0:
            raise IndexError("pop from empty table")
        if self._column_count == 1:
            # This is the last column. So we should clear the table to avoid
            # empty rows
            self.clear(clear_metadata=True)
        else:
            # Not the last column. safe to pop from row
            self._column_count -= 1
            self._column_alignments._pop(index)
            self._column_widths._pop(index)
            self._left_padding_widths._pop(index)
            self._right_padding_widths._pop(index)
            self._column_headers._pop(index)
            for row in self._table:
                row._pop(index)
Remove and return row at index (default last).

        Parameters
        ----------
        index : int, str
            index of the column, or the header of the column.
            If index is specified, then normal list rules apply.

        Raises
        ------
        TypeError:
            If index is not an instance of `int`, or `str`.

        IndexError:
            If Table is empty.