コード例 #1
0
ファイル: test_tabular.py プロジェクト: qbilius/tabular
 def test_join(self):
     ToMerge = [self.X[self.keycols + n] for n in self.others]
     Y = spreadsheet.join(ToMerge)
     Y.sort(order = self.keycols)
     Z = self.X.copy()
     Z.sort(order  = self.keycols)
     self.assert_((Z == Y).all())
コード例 #2
0
ファイル: tab.py プロジェクト: mschrimpf/tabular
def tab_join(ToMerge,
             keycols=None,
             nullvals=None,
             renamer=None,
             returnrenaming=False,
             Names=None):
    '''
    Database-join for tabular arrays.

    Wrapper for :func:`tabular.spreadsheet.join` that deals with the coloring 
    and returns the result as a tabarray.

    Method calls::

            data = tabular.spreadsheet.join

    '''

    [Result, Renaming] = spreadsheet.join(ToMerge,
                                          keycols=keycols,
                                          nullvals=nullvals,
                                          renamer=renamer,
                                          returnrenaming=True,
                                          Names=Names)

    if isinstance(ToMerge, dict):
        Names = ToMerge.keys()
    else:
        Names = range(len(ToMerge))

    Colorings = dict([
        (k, ToMerge[k].coloring) if 'coloring' in dir(ToMerge[k]) else {}
        for k in Names
    ])
    for k in Names:
        if k in Renaming.keys():
            l = ToMerge[k]
            Colorings[k] = \
                dict([(g, [n if not n in Renaming[k].keys() else Renaming[k][n]
                           for n in l.coloring[g]]) for g in Colorings[k].keys()])
    Coloring = {}
    for k in Colorings.keys():
        for j in Colorings[k].keys():
            if j in Coloring.keys():
                Coloring[j] = utils.uniqify(Coloring[j] + Colorings[k][j])
            else:
                Coloring[j] = utils.uniqify(Colorings[k][j])

    Result = Result.view(tabarray)
    Result.coloring = Coloring

    if returnrenaming:
        return [Result, Renaming]
    else:
        return Result
コード例 #3
0
ファイル: test_tabular.py プロジェクト: qbilius/tabular
    def test_join2(self):
        Y1 = self.X[['Region', 'Sector', 'Amount']].copy()
        Y2 = self.X[['Region', 'Sector', 'Modernized']].copy()
        Y1.renamecol('Amount', 'Modernized')
        Z = spreadsheet.join([Y1, Y2], ['Region', 'Sector'])

        Z1 = self.X[['Region', 'Sector', 'Amount', 'Modernized']]
        Z1.sort()
        Z1.renamecol('Amount', 'Modernized_0')
        Z1.renamecol('Modernized', 'Modernized_1')

        self.assert_((Z1 == Z).all())
コード例 #4
0
ファイル: tab.py プロジェクト: ricleal/InducedRadDam
def tab_join(ToMerge, keycols=None, nullvals=None, renamer=None, 
             returnrenaming=False, Names=None):
    '''
    Database-join for tabular arrays.

    Wrapper for :func:`tabular.spreadsheet.join` that deals with the coloring 
    and returns the result as a tabarray.

    Method calls::

            data = tabular.spreadsheet.join

    '''

    [Result,Renaming] = spreadsheet.join(ToMerge, keycols=keycols, 
          nullvals=nullvals, renamer=renamer, returnrenaming=True, Names=Names)

    if isinstance(ToMerge,dict):
        Names = ToMerge.keys()
    else:
        Names = range(len(ToMerge))

    Colorings = dict([(k,ToMerge[k].coloring) if 'coloring' in dir(ToMerge[k])  
                                              else {} for k in Names])
    for k in Names:
        if k in Renaming.keys():
            l = ToMerge[k]
            Colorings[k] = \
                dict([(g, [n if not n in Renaming[k].keys() else Renaming[k][n] 
                       for n in l.coloring[g]]) for g in Colorings[k].keys()])
    Coloring = {}
    for k in Colorings.keys():
        for j in Colorings[k].keys():
            if j in Coloring.keys():
                Coloring[j] = utils.uniqify(Coloring[j] + Colorings[k][j])
            else:
                Coloring[j] = utils.uniqify(Colorings[k][j])

    Result = Result.view(tabarray)
    Result.coloring = Coloring

    if returnrenaming:
        return [Result,Renaming]
    else:
        return Result
コード例 #5
0
ファイル: test_tabular.py プロジェクト: qbilius/tabular
    def test_join3(self):
        Recs1 = [('North', 'Service', 80.818237828506838),
                 ('North', 'Manufacturing', 67.065114829789664), 
                 ('North', 'Education', 31.043641435185123), 
                 ('North', 'Healthcare', 14.196823211749276), 
                 ('South', 'Service',2.3583798234914521)]
        Recs2 = [('North', 'Service', 33.069022471086903), 
                 ('North', 'Manufacturing', 63.155520758932305), 
                 ('North', 'Education', 70.80529023970098), 
                 ('North', 'Healthcare', 40.301231798570171), 
                 ('South', 'Service', 13.095729670745381)]
        X1 = tb.tabarray(records=Recs1, names=['Region', 'Sector', 'Amount'])
        X2 = tb.tabarray(records=Recs2, names=['Region', 'Sector', 'Amount'])
        Z = spreadsheet.join([X1, X2], keycols=['Region', 'Sector'], 
                             Names=['US', 'China'])

        Recs = [(a, b, c, d) for ((a,b,c),(x1,x2,d)) in zip(Recs1,Recs2)]
        X = tb.tabarray(records=Recs, 
                       names=['Region', 'Sector', 'Amount_US', 'Amount_China'])

        X.sort(order=['Region', 'Sector'])
        Z.sort(order=['Region', 'Sector'])
        assert (X == Z).all()