Exemplo n.º 1
0
 def _make_indexer(self, self_indexer: Index, other_indexer: Index):
     if self.aggregation_required:
         group_ints, group_order = other_indexer.factorize()
         self.other_grouper = group_ints
         self.flat_indexer, self.missing_indices = group_order.get_indexer_non_unique(
             self_indexer)
     else:  # Performance-tuned fast paths for constructing indexers
         if self_indexer.equals(other_indexer):  # Indexers are identical
             self.flat_indexer = np.arange(len(other_indexer))
             self.missing_indices = np.array([], dtype=int)
         elif len(self_indexer.difference(
                 other_indexer)) == 0:  # No missing values
             # Taking the difference is faster than `all(.isin())`
             self.missing_indices = np.array([], dtype=int)
             self.flat_indexer = other_indexer.get_indexer(self_indexer)
         else:  # All other cases
             self.flat_indexer, self.missing_indices = other_indexer.get_indexer_non_unique(
                 self_indexer)