import pandas as pd | |
def column_recall_score(expected: pd.DataFrame, generated: pd.DataFrame) -> float: | |
if expected.shape[0] != generated.shape[0]: | |
return 0.0 | |
matched = 0 | |
used_columns = set() | |
for exp_col in expected.columns: | |
found = False | |
for gen_col in generated.columns: | |
if gen_col in used_columns: | |
continue | |
if expected[exp_col].equals(generated[gen_col]): | |
matched += 1 | |
used_columns.add(gen_col) | |
found = True | |
break | |
total = expected.shape[1] | |
return matched / total if total > 0 else 0.0 |