29 lines
689 B
Python
29 lines
689 B
Python
|
#!/usr/bin/env python
|
||
|
# pylint: disable=W0212
|
||
|
|
||
|
from agate.rows import Row
|
||
|
from agate import utils
|
||
|
|
||
|
|
||
|
def select(self, key):
|
||
|
"""
|
||
|
Create a new table with only the specified columns.
|
||
|
|
||
|
:param key:
|
||
|
Either the name of a single column to include or a sequence of such
|
||
|
names.
|
||
|
:returns:
|
||
|
A new :class:`.Table`.
|
||
|
"""
|
||
|
if not utils.issequence(key):
|
||
|
key = [key]
|
||
|
|
||
|
indexes = tuple(self._column_names.index(k) for k in key)
|
||
|
column_types = tuple(self._column_types[i] for i in indexes)
|
||
|
new_rows = []
|
||
|
|
||
|
for row in self._rows:
|
||
|
new_rows.append(Row((row[i] for i in indexes), key))
|
||
|
|
||
|
return self._fork(new_rows, key, column_types)
|