/ src / evidently / legacy / features / exact_match_feature.py
exact_match_feature.py
 1  from typing import ClassVar
 2  from typing import List
 3  
 4  import pandas as pd
 5  
 6  from evidently.legacy.base_metric import ColumnName
 7  from evidently.legacy.core import ColumnType
 8  from evidently.legacy.features.generated_features import GeneratedFeature
 9  from evidently.legacy.utils.data_preprocessing import DataDefinition
10  
11  
12  class ExactMatchFeature(GeneratedFeature):
13      class Config:
14          type_alias = "evidently:feature:ExactMatchFeature"
15  
16      __feature_type__: ClassVar = ColumnType.Categorical
17      columns: List[str]
18  
19      def generate_feature(self, data: pd.DataFrame, data_definition: DataDefinition) -> pd.DataFrame:
20          return pd.DataFrame({self._feature_name(): data[self.columns[0]] == data[self.columns[1]]})
21  
22      def _feature_name(self):
23          return "|".join(self.columns)
24  
25      def _as_column(self) -> "ColumnName":
26          return self._create_column(
27              self._feature_name(),
28              default_display_name=f"Exact Match for {' '.join(self.columns)}.",
29          )