def get_result(self): join_index, left_indexer, right_indexer = self._get_join_info() # this is a bit kludgy ldata, rdata = self.left._data, self.right._data lsuf, rsuf = self.suffixes llabels, rlabels = items_overlap_with_suffix(ldata.items, lsuf, rdata.items, rsuf) if self.fill_method == 'ffill': left_join_indexer = _algos.ffill_indexer(left_indexer) right_join_indexer = _algos.ffill_indexer(right_indexer) else: left_join_indexer = left_indexer right_join_indexer = right_indexer lindexers = { 1: left_join_indexer} if left_join_indexer is not None else {} rindexers = { 1: right_join_indexer} if right_join_indexer is not None else {} result_data = concatenate_block_managers( [(ldata, lindexers), (rdata, rindexers)], axes=[llabels.append(rlabels), join_index], concat_axis=0, copy=self.copy) typ = self.left._constructor result = typ(result_data).__finalize__(self, method='ordered_merge') self._maybe_add_join_keys(result, left_indexer, right_indexer) return result
def get_result(self): if self.indicator: self.left, self.right = self._indicator_pre_merge( self.left, self.right) join_index, left_indexer, right_indexer = self._get_join_info() ldata, rdata = self.left._data, self.right._data lsuf, rsuf = self.suffixes llabels, rlabels = items_overlap_with_suffix(ldata.items, lsuf, rdata.items, rsuf) lindexers = {1: left_indexer} if left_indexer is not None else {} rindexers = {1: right_indexer} if right_indexer is not None else {} result_data = concatenate_block_managers( [(ldata, lindexers), (rdata, rindexers)], axes=[llabels.append(rlabels), join_index], concat_axis=0, copy=self.copy) typ = self.left._constructor result = typ(result_data).__finalize__(self, method='merge') if self.indicator: result = self._indicator_post_merge(result) self._maybe_add_join_keys(result, left_indexer, right_indexer) return result
def _get_merge_data(self): """ Handles overlapping column names etc. """ ldata, rdata = self.left._data, self.right._data lsuf, rsuf = self.suffixes llabels, rlabels = items_overlap_with_suffix(ldata.items, lsuf, rdata.items, rsuf) if not llabels.equals(ldata.items): ldata = ldata.copy(deep=False) ldata.set_axis(0, llabels) if not rlabels.equals(rdata.items): rdata = rdata.copy(deep=False) rdata.set_axis(0, rlabels) return ldata, rdata
def _get_merge_data(self): """ Handles overlapping column names etc. """ ldata, rdata = self.left._data, self.right._data lsuf, rsuf = self.suffixes llabels, rlabels = items_overlap_with_suffix( ldata.items, lsuf, rdata.items, rsuf) if not llabels.equals(ldata.items): ldata = ldata.copy(deep=False) ldata.set_axis(0, llabels) if not rlabels.equals(rdata.items): rdata = rdata.copy(deep=False) rdata.set_axis(0, rlabels) return ldata, rdata