Exemplo n.º 1
0
    def search( self, keys, values, funcs='=', ret_raw=False, ret_all=True ):
        '''
        aSrc    : source numpy 2d-array
        keys    : keys of target columns in self.cols
        values  : data to be matched or None (get an entire column)

        func    : ['=', '>', '<', '!=', ..., '~']
                  '~' for fuzzy searching

        ret     : ['table',     #
                   'array',     #
                   ]

        ret_raw : True          # numpy array for all colums
                  False         # Table instance

        ret_all : True          # return all columns
                  False         # return only selected columns

        e.g.)
        searchtable( aSrc, (0, 3, 2), ('test', 3000, None), ('~','>', None) )
        '''

        cols    = [ self.cols.index( key ) for key in keys] if hasattr( keys, '__iter__') \
             else [ self.cols.index( keys ) ]

        table   = searchtable( self._table_, cols, values, funcs, ret_all )

        if ret_raw:
            return table

        else:
            cols    = self.cols if ret_all else [ self.cols[i] for i in cols ]
            return self.new_instance( table, cols )
Exemplo n.º 2
0
    def select(self, keys, values, fnComps):
        '''
        * for sequential filetering

        e.g., grdc.filtered('m_yrs', 100, '>').filtered('area',10000, '>').filtered('river','amazon','~')
        '''

        #table       = self.search( keys, values, fnComps, ret_all=True )
        cols    = [self.cols.index( k ) for k in keys] if hasattr( keys, '__iter__') \
             else self.cols.index( keys )

        table       = searchtable( self._table_, cols, values, fnComps, True )

        if table.size == 0:
            raise ValueError, 'all records filtered out! [] returned!'

        else:
            self.filters[ keys ]     = [values, fnComps]
            self._table_            = table

        return self