<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def remove_column(self, column_name, inplace=False):
 """ Returns an SFrame with a column removed. If inplace == False (default) this operation does not modify the current SFrame, returning a new SFrame. If inplace == True, this operation modifies the current SFrame, returning self. Parameters column_name : string The name of the column to remove. inplace : bool, optional. Defaults to False. Whether the SFrame is modified in place. Returns ------- out : SFrame The SFrame with given column removed. Examples -------- +----+ | id | +----+ | 1 | | 2 | | 3 | +----+ [3 rows x 1 columns] """

        column_name = str(column_name)
        if column_name not in self.column_names():
            raise KeyError('Cannot find column %s' % column_name)
        colid = self.column_names().index(column_name)

        if inplace:
            ret = self
        else:
            ret = self.copy()

        with cython_context():
            ret.__proxy__.remove_column(colid)

        ret._cache = None
        return ret