target_mapping = mapping_df.copy() for attr, rule_value in target_selection_rules.items(): values = normalize_rule_value(rule_value) values = normalize_list_for_matching(values) if values is None: continue target_mapping = target_mapping[ target_mapping[attr] .apply(normalize_for_matching) .isin(values) ] selected_target_columns = ( target_mapping["source_column_name"] .dropna() .tolist() )