import pandas as pd | |
def contains_code(crs_codes, code_list): | |
codes = str(crs_codes).split(';') | |
return any(code in code_list for code in codes) | |
def filter_projects(df, crs3_list, crs5_list, sdg_str): | |
if crs3_list != [] or crs5_list != [] or sdg_str != "": | |
if crs3_list and not crs5_list: | |
df = df[df['crs_3_code'].apply(lambda x: contains_code(x, crs3_list))] | |
elif crs3_list and crs5_list: | |
df = df[df['crs_5_code'].apply(lambda x: contains_code(x, crs5_list))] | |
elif not crs3_list and crs5_list: | |
df = df[df['crs_5_code'].apply(lambda x: contains_code(x, crs5_list))] | |
if sdg_str != "": | |
df = df[df["sgd_pred_code"] == int(sdg_str)] | |
return df | |