One can create a new table from an existing table, so you should be able to do this with:
```
return self.__class__(self, copy=copy_data)
```
Future versions of `Table` will support virtual column data that isn't necessarily contained in the underlying `self._data` ndarray, so it's important to delegate to the class initializer with the entire current table `self` to handle everything correctly.