Created get_col method with tests and tutorial.rst update

Useful when you have multiple columns with the same header
This commit is contained in:
Mark Walling
2011-07-11 17:13:47 -04:00
parent cd5aa4fc06
commit e74a8f41cc
3 changed files with 29 additions and 1 deletions
+7
View File
@@ -146,6 +146,13 @@ To do so, we access the :class:`Dataset` as if it were a standard Python diction
>>> data['First Name']
['Kenneth', 'Bessie']
You can also access the column using its index. ::
>>> d.headers
['Last Name', 'First Name', 'Age']
>>> d.get_col(1)
['Kenneth', 'Bessie']
Let's find the average age. ::
>>> ages = data['Age']
+6 -1
View File
@@ -175,7 +175,6 @@ class Dataset(object):
else:
return [result.tuple for result in _results]
def __setitem__(self, key, value):
self._validate(value)
self._data[key] = Row(value)
@@ -695,6 +694,12 @@ class Dataset(object):
self.rpush_col(col, header)
def get_col(self, index):
"""Returns the column from the :class:`Dataset` at the given index."""
return [row[index] for row in self._data]
# ----
# Misc
# ----
+16
View File
@@ -113,6 +113,22 @@ class TablibTestCase(unittest.TestCase):
[self.john[2], self.george[2], self.tom[2]])
def test_get_col(self):
"""Verify getting columns by index"""
self.assertEqual(
self.founders.get_col(self.headers.index('first_name')),
[self.john[0], self.george[0], self.tom[0]])
self.assertEqual(
self.founders.get_col(self.headers.index('last_name')),
[self.john[1], self.george[1], self.tom[1]])
self.assertEqual(
self.founders.get_col(self.headers.index('gpa')),
[self.john[2], self.george[2], self.tom[2]])
def test_data_slicing(self):
"""Verify slicing by data."""