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())
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
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())
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
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()