'Insert a new index among one or more columns.
If there are no indices, make this index the
primary table index.
Parameters
colnames : str or list
List of column names (or a single column name) to index
engine : type or None
Indexing engine class to use, from among SortedArray, BST,
FastBST, and FastRBT. If the supplied argument is None (by
default), use SortedArray.
unique : bool
Whether the values of the index must be unique. Default is False.'

def add_index(self, colnames, engine=None, unique=False):

    if isinstance(colnames, six.string_types):
        colnames = (colnames,)
    columns = self.columns[tuple(colnames)].values()
    for col in columns:
        if (not getattr(col.info, u'_supports_indexing', False)):
            raise ValueError(u'Cannot    create    an    index    on    column    "{0}",    of    type    "{1}"'.format(col.info.name, type(col)))
    index = Index(columns, engine=engine, unique=unique)
    if (not self.indices):
        self.primary_key = colnames
    for col in columns:
        col.info.indices.append(index)
