Exemplo n.º 1
0
 def _condition_logic(base_idx: pd.Index, sub_select_idx: pd.Index, state_idx: pd.Index, condition_idx: pd.Index,
                      logic: str) -> pd.Index:
     if str(logic).upper() == 'ALL':
         return base_idx.intersection(condition_idx).sort_values()
     elif str(logic).upper() == 'ANY':
         return sub_select_idx.intersection(condition_idx).sort_values()
     elif str(logic).upper() == 'AND':
         return state_idx.intersection(condition_idx).sort_values()
     elif str(logic).upper() == 'NAND':
         return sub_select_idx.drop(state_idx.intersection(condition_idx)).sort_values()
     elif str(logic).upper() == 'OR':
         return state_idx.append(state_idx.union(condition_idx)).drop_duplicates().sort_values()
     elif str(logic).upper() == 'NOR':
         result = state_idx.append(state_idx.union(condition_idx)).drop_duplicates().sort_values()
         return sub_select_idx.drop(result)
     elif str(logic).upper() == 'NOT':
         return state_idx.difference(condition_idx)
     elif str(logic).upper() == 'XOR':
         return state_idx.union(condition_idx).difference(state_idx.intersection(condition_idx))
     raise ValueError(f"The logic '{logic}' must be AND, NAND, OR, NOR, NOT, XOR ANY or ALL")