Esempio n. 1
0
    def _setitem_loc(self, key, value):
        if isinstance(value, datetime.datetime):
            value = [miutil.jdatetime(value)]
        if isinstance(value, (list, tuple)):
            if isinstance(value[0], datetime.datetime):
                value = miutil.jdatetime(value)
            #value = np.array(value)
        if isinstance(value, np.NDArray):
            value = value._array

        self._dataframe.setRow(key, value)
Esempio n. 2
0
 def __getitem__(self, key):
     if isinstance(key, Index):
         key = key.data
     elif isinstance(key, datetime.datetime):
         key = miutil.jdatetime(key)
         
     if isinstance(key, int):
         if key < 0 or key >= self.__len__():
             raise KeyError(key)
         return self._series.getValue(key)
     elif isinstance(key, (list, tuple, MIArray)):
         if isinstance(key, MIArray):
             key = key.aslist()
         if isinstance(key[0], datetime.datetime):
             key = miutil.jdatetime(key)
         if isinstance(key[0], int):
             r = self._series.getValues(key)
         else:                
             r = self._series.getValueByIndex(key)
         return Series(series=r)
     elif isinstance(key, slice):
         if isinstance(key.start, basestring):
             sidx = self._index.index(key.start)
             if sidx < 0:
                 sidx = 0
         else:
             sidx = 0 if key.start is None else key.start
             if sidx < 0:
                 sidx = self.__len__() + sidx
         if isinstance(key.stop, basestring):
             eidx = self._index.index(key.stop)
             if eidx < 0:
                 eidx = self.__len__()
         else:
             eidx = self.__len__() - 1 if key.stop is None else key.stop - 1
             if eidx < 0:
                 eidx = self.__len__() + eidx                    
         step = 1 if key.step is None else key.step
         rowkey = Range(sidx, eidx, step)   
         r = self._series.getValues(rowkey)
         return Series(series=r)
     else:
         r = self._series.getValueByIndex(key)
         if isinstance(r, MISeries):
             return Series(series=r)
         else:
             return r
Esempio n. 3
0
    def __getitem__(self, key):
        if isinstance(key, Index):
            key = key.data
        elif isinstance(key, datetime.datetime):
            key = miutil.jdatetime(key)

        if isinstance(key, int):
            if key < 0 or key >= self.__len__():
                raise KeyError(key)
            return self._series.getValue(key)
        elif isinstance(key, (list, tuple, MIArray)):
            if isinstance(key, MIArray):
                key = key.aslist()
            if isinstance(key[0], datetime.datetime):
                key = miutil.jdatetime(key)
            if isinstance(key[0], int):
                r = self._series.getValues(key)
            else:
                r = self._series.getValueByIndex(key)
            return Series(series=r)
        elif isinstance(key, slice):
            if isinstance(key.start, basestring):
                sidx = self._index.index(key.start)
                if sidx < 0:
                    sidx = 0
            else:
                sidx = 0 if key.start is None else key.start
                if sidx < 0:
                    sidx = self.__len__() + sidx
            if isinstance(key.stop, basestring):
                eidx = self._index.index(key.stop)
                if eidx < 0:
                    eidx = self.__len__()
            else:
                eidx = self.__len__() - 1 if key.stop is None else key.stop - 1
                if eidx < 0:
                    eidx = self.__len__() + eidx
            step = 1 if key.step is None else key.step
            rowkey = Range(sidx, eidx, step)
            r = self._series.getValues(rowkey)
            return Series(series=r)
        else:
            r = self._series.getValueByIndex(key)
            if isinstance(r, MISeries):
                return Series(series=r)
            else:
                return r
Esempio n. 4
0
 def insert(self, loc, column, value):
     '''
     Insert column into DataFrame at specified location.
     
     :param loc: (*int*) Insertation index.
     :param column: (*string*) Label of inserted column.
     :param value: (*array_like*) Column values.
     '''
     if isinstance(value, datetime.datetime):
         value = miutil.jdatetime(value)
     if isinstance(value, (list, tuple)):
         if isinstance(value[0], datetime.datetime):
             value = miutil.jdatetime(value)
         value = minum.array(value)
     if isinstance(value, MIArray):
         value = value.array
     self._dataframe.addColumn(loc, column, value)
Esempio n. 5
0
 def insert(self, loc, column, value):
     '''
     Insert column into DataFrame at specified location.
     
     :param loc: (*int*) Insertation index.
     :param column: (*string*) Label of inserted column.
     :param value: (*array_like*) Column values.
     '''
     if isinstance(value, datetime.datetime):
         value = miutil.jdatetime(value)
     if isinstance(value, (list, tuple)):
         if isinstance(value[0], datetime.datetime):
             value = miutil.jdatetime(value)
         value = minum.array(value)
     if isinstance(value, MIArray):
         value = value.array 
     self._dataframe.addColumn(loc, column, value)
Esempio n. 6
0
 def get_loc(self, key, outkeys=False):
     '''
     Get integer location, slice or boolean mask for requested label.
     
     :param key: (*string or list*) Label.
     :param outkeys: (*boolean*) If return location keys or not.
     
     :returns: int if unique index, slice if monotonic index, else mask.
     '''
     if isinstance(key, datetime.datetime):
         key = miutil.jdatetime(key)
     elif isinstance(key, (list, tuple)) and isinstance(key[0], datetime.datetime):
         key = miutil.jdatetime(key)
     r = self._index.getIndices(key)
     if outkeys:            
         return list(r[0]), list(r[1])
     else:
         return list(r[0])
Esempio n. 7
0
 def get_loc(self, key, outkeys=False):
     '''
     Get integer location, slice or boolean mask for requested label.
     
     :param key: (*string or list*) Label.
     :param outkeys: (*boolean*) If return location keys or not.
     
     :returns: int if unique index, slice if monotonic index, else mask.
     '''
     if isinstance(key, datetime.datetime):
         key = miutil.jdatetime(key)
     elif isinstance(key, (list, tuple, MIArray)) and isinstance(key[0], datetime.datetime):
         key = miutil.jdatetime(key)
     r = self._index.getIndices(key)
     if outkeys:            
         return list(r[0]), list(r[1])
     else:
         return list(r[0])
Esempio n. 8
0
 def index(self, v):
     '''
     Get index of a value.
     
     :param v: (*datetime or string*) Date time value
     
     :returns: (*int*) Value index
     '''
     if isinstance(v, datetime.datetime):
         v = miutil.jdatetime(v)
     else:
         v = miutil.str2jdate(v)
     return self._index.indexOf(v)
Esempio n. 9
0
 def index(self, v):
     '''
     Get index of a value.
     
     :param v: (*datetime or string*) Date time value
     
     :returns: (*int*) Value index
     '''
     if isinstance(v, datetime.datetime):
         v = miutil.jdatetime(v)
     else:
         v = miutil.str2jdate(v)
     return self._index.indexOf(v)
Esempio n. 10
0
    def __setitem__(self, key, value):
        if isinstance(value, datetime.datetime):
            value = miutil.jdatetime(value)
        if isinstance(value, (list, tuple)):
            if isinstance(value[0], datetime.datetime):
                value = miutil.jdatetime(value)
            value = np.array(value)
        if isinstance(value, np.NDArray):
            value = value._array

        if isinstance(key, basestring):
            if isinstance(value, series.Series):
                value = value.values._array
            self._dataframe.setColumn(key, value)
            return

        hascolkey = True
        if isinstance(key, tuple):
            ridx = key[0]
            cidx = key[1]
            if isinstance(ridx, int) and isinstance(cidx, int):
                if ridx < 0:
                    ridx = self.shape[0] + ridx
                if cidx < 0:
                    cidx = self.shape[1] + cidx
                self._dataframe.setValue(ridx, cidx, value)
                return
            elif isinstance(ridx, int) and isinstance(cidx, basestring):
                if ridx < 0:
                    ridx = self.shape[0] + ridx
                self._dataframe.setValue(ridx, cidx, value)
                return
        else:
            key = (key, slice(None))
            hascolkey = False

        k = key[0]
        if isinstance(k, int):
            if k < 0:
                k = self.shape[0] + k
            rowkey = k
        elif isinstance(k, basestring):
            sidx = self._index.index(k)
            if sidx < 0:
                return None
            eidx = sidx
            step = 1
            rowkey = Range(sidx, eidx, step)
        elif isinstance(k, slice):
            if isinstance(k.start, basestring):
                sidx = self._index.index(k.start)
                if sidx < 0:
                    sidx = 0
            else:
                sidx = 0 if k.start is None else k.start
                if sidx < 0:
                    sidx = self.shape[0] + sidx
            if isinstance(k.stop, basestring):
                eidx = self._index.index(k.stop)
                if eidx < 0:
                    eidx = self.shape[0] + eidx
            else:
                eidx = self.shape[0] - 1 if k.stop is None else k.stop - 1
                if eidx < 0:
                    eidx = self.shape[0] + eidx
            step = 1 if k.step is None else k.step
            rowkey = Range(sidx, eidx, step)
        elif isinstance(k, list):
            if isinstance(k[0], int):
                rowkey = k
            else:
                tlist = []
                for tstr in k:
                    idx = self._index.index(tstr)
                    if idx >= 0:
                        tlist.append(idx)
                rowkey = tlist
        else:
            return

        if not hascolkey:
            colkey = Range(0, self.shape[1] - 1, 1)
        else:
            k = key[1]
            if isinstance(k, int):
                sidx = k
                if sidx < 0:
                    sidx = self.shape[1] + sidx
                eidx = sidx
                step = 1
                colkey = Range(sidx, eidx, step)
            elif isinstance(k, slice):
                sidx = 0 if k.start is None else k.start
                if sidx < 0:
                    sidx = self.shape[1] + sidx
                eidx = self.shape[1] - 1 if k.stop is None else k.stop - 1
                if eidx < 0:
                    eidx = self.shape[1] + eidx
                step = 1 if k.step is None else k.step
                colkey = Range(sidx, eidx, step)
            elif isinstance(k, list):
                if isinstance(k[0], int):
                    colkey = k
                else:
                    colkey = self.columns.indexOfName(k)
            elif isinstance(k, basestring):
                col = self.columns.indexOf(k)
                colkey = Range(col, col + 1, 1)
            else:
                return

        self._dataframe.setValues(rowkey, colkey, value)
Esempio n. 11
0
 def __setitem__(self, key, value):
     if isinstance(value, datetime.datetime):
         value = miutil.jdatetime(value)
     if isinstance(value, (list, tuple)):
         if isinstance(value[0], datetime.datetime):
             value = miutil.jdatetime(value)
         value = minum.array(value)
     if isinstance(value, MIArray):
         value = value.array            
         
     if isinstance(key, basestring):
         if isinstance(value, series.Series):
             value = value.values.array
         self._dataframe.setColumn(key, value)
         return
         
     hascolkey = True
     if isinstance(key, tuple): 
         ridx = key[0]
         cidx = key[1]
         if isinstance(ridx, int) and isinstance(cidx, int):
             if ridx < 0:
                 ridx = self.shape[0] + ridx
             if cidx < 0:
                 cidx = self.shape[1] + cidx
             self._dataframe.setValue(ridx, cidx, value)
             return
         elif isinstance(ridx, int) and isinstance(cidx, basestring):
             if ridx < 0:
                 ridx = self.shape[0] + ridx
             self._dataframe.setValue(ridx, cidx, value)
             return
     else:
         key = (key, slice(None))
         hascolkey = False
         
     k = key[0]
     if isinstance(k, int):
         if k < 0:
             k = self.shape[0] + k
         rowkey = k
     elif isinstance(k, basestring):
         sidx = self._index.index(k)
         if sidx < 0:
             return None
         eidx = sidx
         step = 1
         rowkey = Range(sidx, eidx, step)
     elif isinstance(k, slice):
         if isinstance(k.start, basestring):
             sidx = self._index.index(k.start)
             if sidx < 0:
                 sidx = 0
         else:
             sidx = 0 if k.start is None else k.start
             if sidx < 0:
                 sidx = self.shape[0] + sidx
         if isinstance(k.stop, basestring):
             eidx = self._index.index(k.stop)
             if eidx < 0:
                 eidx = self.shape[0] + eidx
         else:
             eidx = self.shape[0] - 1 if k.stop is None else k.stop - 1
             if eidx < 0:
                 eidx = self.shape[0] + eidx                    
         step = 1 if k.step is None else k.step
         rowkey = Range(sidx, eidx, step)
     elif isinstance(k, list):
         if isinstance(k[0], int):
             rowkey = k
         else:
             tlist = []
             for tstr in k:
                 idx = self._index.index(tstr)
                 if idx >= 0:
                     tlist.append(idx)
             rowkey = tlist
     else:
         return
         
     if not hascolkey:
         colkey = Range(0, self.shape[1] - 1, 1)
     else:
         k = key[1]
         if isinstance(k, int):
             sidx = k
             if sidx < 0:
                 sidx = self.shape[1] + sidx
             eidx = sidx
             step = 1
             colkey = Range(sidx, eidx, step)
         elif isinstance(k, slice):
             sidx = 0 if k.start is None else k.start
             if sidx < 0:
                 sidx = self.shape[1] + sidx
             eidx = self.shape[1] - 1 if k.stop is None else k.stop - 1
             if eidx < 0:
                 eidx = self.shape[1] + eidx                    
             step = 1 if k.step is None else k.step
             colkey = Range(sidx, eidx, step)        
         elif isinstance(k, list):
             if isinstance(k[0], int):
                 colkey = k
             else:
                 colkey = self.columns.indexOfName(k)               
         elif isinstance(k, basestring):
             col = self.columns.indexOf(k)
             colkey = Range(col, col + 1, 1)
         else:
             return
     
     self._dataframe.setValues(rowkey, colkey, value)