Development-Project-Synergy-Finder / modules /singlematch_result_table.py
ppsingh's picture
Upload 42 files
03c02ff verified
Raw
History Blame Contribute Delete
8.45 kB
import streamlit as st
import pandas as pd
"""
Result table of the Single Project Matching
"""
def show_single_table(selected_project_index, projects_df, result_df):
"""
TODO: Add this to preprocessing
"""
result_df['crs_3_code_list'] = result_df['crs_3_name'].apply(
lambda x: [""] if x is None else (str(x).split(";")[:-1] if str(x).endswith(";") else str(x).split(";")[:-1])
)
result_df['crs_5_code_list'] = result_df['crs_5_name'].apply(
lambda x: [""] if x is None else (str(x).split(";")[:-1] if str(x).endswith(";") else str(x).split(";")[:-1])
)
result_df['sdg_list'] = result_df['sgd_pred_code'].apply(
lambda x: [""] if x is None else (str(x).split(";")[:-1] if str(x).endswith(";") else str(x).split(";"))
)
# Convert orga_abbreviation to uppercase for the selected project
result_df['orga_abbreviation'] = result_df['orga_abbreviation'].str.upper()
# Set country_flag to None if country_name is missing
result_df['country_flag'] = result_df.apply(
lambda row: None if pd.isna(row['country_name']) else row['country_flag'],
axis=1
)
sel_p_row = projects_df.iloc[[selected_project_index]]
sel_p_row['crs_3_code_list'] = sel_p_row['crs_3_name'].apply(
lambda x: [""] if x is None else (str(x).split(";")[:-1] if str(x).endswith(";") else str(x).split(";")[:-1])
)
sel_p_row['crs_5_code_list'] = sel_p_row['crs_5_name'].apply(
lambda x: [""] if x is None else (str(x).split(";")[:-1] if str(x).endswith(";") else str(x).split(";")[:-1])
)
sel_p_row['sdg_list'] = sel_p_row['sgd_pred_code'].apply(
lambda x: [""] if x is None else (str(x).split(";")[:-1] if str(x).endswith(";") else str(x).split(";"))
)
# Convert orga_abbreviation to uppercase for the selected project
sel_p_row['orga_abbreviation'] = sel_p_row['orga_abbreviation'].str.upper()
# Displaye selected project and infos
st.subheader("Reference Project")
st.dataframe(
sel_p_row[["iati_id", "title_main", "orga_abbreviation", "description_main", "country_name", "country_flag", "sdg_list", "crs_3_code_list", "crs_5_code_list", "Project Link"]],
use_container_width = True,
height = 35 + 35 * len(sel_p_row),
column_config={
"iati_id": st.column_config.TextColumn(
"IATI ID",
help="IATI Project ID",
disabled=True,
width="small"
),
"orga_abbreviation": st.column_config.TextColumn(
"Organization",
help="If description not in English, description in other language provided",
disabled=True,
width="small"
),
"title_main": st.column_config.TextColumn(
"Title",
help="If title not in English, title in other language provided",
disabled=True,
width="large"
),
"description_main": st.column_config.TextColumn(
"Description",
help="If description not in English, description in other language provided",
disabled=True,
width="large"
),
"country_name": st.column_config.TextColumn(
"Country",
help="Country of project",
disabled=True,
width="small"
),
"country_flag": st.column_config.ImageColumn(
"Flag",
help="country flag",
width="small"
),
"sdg_list": st.column_config.ListColumn(
"SDG Prediction",
help="Prediction of SDG's",
width="small"
),
"crs_3_code_list": st.column_config.ListColumn(
"CRS 3",
help="CRS 3 code given by organization",
width="medium"
),
"crs_5_code_list": st.column_config.ListColumn(
"CRS 5",
help="CRS 5 code given by organization",
width="medium"
),
"Project Link": st.column_config.TextColumn(
"Project Link",
help="Link to the project",
disabled=True,
width="small"
),
},
hide_index=True,
)
# Display the similar projects of the selected project
if len(result_df) == 0:
st.write("No results found!")
else:
result_df = result_df.reset_index(drop=True)
result_df['similarity'] = (result_df['similarity'] * 100).round(4)
st.write("----------------------")
st.subheader("Similar Projects")
st.dataframe(
result_df[["similarity", "iati_id", "title_main", "orga_abbreviation", "description_main", "country_name", "country_flag", "sdg_list", "crs_3_code_list", "crs_5_code_list", "Project Link"]],
use_container_width = True,
height = 35 + 35 * len(result_df),
column_config={
"similarity": st.column_config.ProgressColumn(
"Similarity",
help="Similarity",
format=" %f %%",
min_value=0,
max_value=100,
),
"iati_id": st.column_config.TextColumn(
"IATI ID",
help="IATI Project ID",
disabled=True,
width="small"
),
"orga_abbreviation": st.column_config.TextColumn(
"Organization",
help="If description not in English, description in other language provided",
disabled=True,
width="small"
),
"title_main": st.column_config.TextColumn(
"Title",
help="If title not in English, title in other language provided",
disabled=True,
width="large"
),
"description_main": st.column_config.TextColumn(
"Description",
help="If description not in English, description in other language provided",
disabled=True,
width="large"
),
"country_name": st.column_config.TextColumn(
"Country",
help="Country of project",
disabled=True,
width="small"
),
"country_flag": st.column_config.ImageColumn(
"Flag",
help="country flag",
width="small"
),
"sdg_list": st.column_config.ListColumn(
"SDG Prediction",
help="Prediction of SDG's",
width="small"
),
"crs_3_code_list": st.column_config.ListColumn(
"CRS 3",
help="CRS 3 code given by organization",
width="medium"
),
"crs_5_code_list": st.column_config.ListColumn(
"CRS 5",
help="CRS 5 code given by organization",
width="medium"
),
},
hide_index=True,
)