def __init__(self, left, right): super().__init__() self.left = left self.right = right if self.left.row_count != self.right.row_count: raise ValueError( f'Merging datasets with unequal row counts ({self.left.row_count} != {self.right.row_count})' ) self._row_count = self.left.row_count overlap = set(left) & set(right) if overlap: raise NameError(f'Duplicate names: {overlap}') # TODO: for DatasetArray, we might want to just do this? # self._columns = frozendict({**left._columns, **right._columns}) self._columns = { **{ name: ColumnProxy(self.left, name, data_type(col)) for name, col in self.left._columns.items() }, **{ name: ColumnProxy(self.right, name, data_type(col)) for name, col in self.right._columns.items() } } self._ids = frozendict({**left._ids, **right._ids}) self._set_row_count()
def _create_columns(self): # TODO: for DatasetArray, we might want to just do this? # self._columns = frozendict({**left._columns, **right._columns}) self._columns = { **{ name: ColumnProxy(self.left, name, data_type(col)) for name, col in self.left._columns.items() }, **{ name: ColumnProxy(self.right, name, data_type(col)) for name, col in self.right._columns.items() } }