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 )