docstr: Return all the indices of dataframe A that column a not in column b of dataframe B
  
  Args:
      df_a: dataframe A
      df_b: dataframe B
      col_a: column name a
      col_b: column name b
  
  Returns:
      A list of indices that is orphaned
docstr_tok: ["Return","all","the","indices","of","dataframe","A","that","column","a","not","in","column","b","of","dataframe","B","Args",":","df_a",":","dataframe","A","df_b",":","dataframe","B","col_a",":","column","name","a","col_b",":","column","name","b","Returns",":","A","list","of","indices","that","is","orphaned"]
code: def orphaned_relation_check(
      cls,
      df_a: pd.DataFrame,
      df_b: pd.DataFrame,
      col_a: str,
      col_b: str,
  ) -> List[bool]:
      """
      Return all the indices of dataframe A that column a not in column b of dataframe B
  
      Args:
          df_a: dataframe A
          df_b: dataframe B
          col_a: column name a
          col_b: column name b
  
      Returns:
          A list of indices that is orphaned
      """
  
      if col_a not in df_a.columns:
          raise ColumnNotFound(col_a, df_a.columns)
      if col_b not in df_b.columns:
          raise ColumnNotFound(col_b, df_b.columns)
      foreign_key = set(df_b[col_b].values)
  
      return df_a[~df_a[col_a].isin(foreign_key)].index.tolist()
  
file_path: contextual-ai/xai/data/validator/dataframe_validator.py
imports: import operator
  from collections import Counter
  from typing import List, Tuple
  import pandas
  from xai.data.exceptions import ColumnNotFound
label_desc: Use image node_id 2 for calling the DataframeValidator obj's underlying member method code with example usage: obj.orphaned_relation_check(cls, df_a, df_b, col_a, col_b) and returns: df_a