diff options
| author | Kenneth Reitz <me@kennethreitz.com> | 2011-01-31 01:36:14 -0500 |
|---|---|---|
| committer | Kenneth Reitz <me@kennethreitz.com> | 2011-01-31 01:36:14 -0500 |
| commit | 08ed3093823c6c3fa3500a509d201e483e22c4f5 (patch) | |
| tree | ef25c2f5969cfa88d4802243a588e753a2118834 /tablib | |
| parent | 34415b89b858075323b7a2d034c06b57dd26bdc7 (diff) | |
| parent | 140736ff332ff164f18821ec150488b1a2092898 (diff) | |
| download | tablib-08ed3093823c6c3fa3500a509d201e483e22c4f5.tar.gz | |
Merge branch 'release/0.9.3' into develop
Diffstat (limited to 'tablib')
| -rw-r--r-- | tablib/core.py | 43 |
1 files changed, 41 insertions, 2 deletions
diff --git a/tablib/core.py b/tablib/core.py index c7e9dd5..9d36970 100644 --- a/tablib/core.py +++ b/tablib/core.py @@ -10,13 +10,14 @@ """ from copy import copy +from operator import itemgetter from tablib import formats __title__ = 'tablib' -__version__ = '0.9.2' -__build__ = 0x000902 +__version__ = '0.9.3' +__build__ = 0x000903 __author__ = 'Kenneth Reitz' __license__ = 'MIT' __copyright__ = 'Copyright 2011 Kenneth Reitz' @@ -519,6 +520,7 @@ class Dataset(object): else: self._data = [Row([row]) for row in col] + def filter(self, tag): """Returns a new instance of the :class:`Dataset`, excluding any rows that do not contain the given :ref:`tags <tags>`. @@ -528,6 +530,43 @@ class Dataset(object): return _dset + + def sort(self, col, reverse=False): + """Sort a :class:`Dataset` by a specific column, given string (for + header) or integer (for column index). The order can be reversed by + setting ``reverse`` to ``True``. + Returns a new :class:`Dataset` instance where columns have been + sorted.""" + + if isinstance(col, basestring): + + if not self.headers: + raise HeadersNeeded + + _sorted = sorted(self.dict, key=itemgetter(col), reverse=reverse) + _dset = Dataset(headers=self.headers) + + for item in _sorted: + row = [item[key] for key in self.headers] + _dset.append(row=row) + + else: + if self.headers: + col = self.headers[col] + + _sorted = sorted(self.dict, key=itemgetter(col), reverse=reverse) + _dset = Dataset(headers=self.headers) + + for item in _sorted: + if self.headers: + row = [item[key] for key in self.headers] + else: + row = item + _dset.append(row=row) + + + return _dset + def transpose(self): """Transpose a :class:`Dataset`, turning rows into columns and vice versa, returning a new ``Dataset`` instance. The first row of the |
