fixing_metrics.py 1.7 KB
Newer Older
Joaquin Torres's avatar
Joaquin Torres committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
import pandas as pd

def swap_fp_fn_rows(excel_path, output_path):
    # Load the Excel file
    excel_data = pd.ExcelFile(excel_path)

    # Create a Pandas ExcelWriter using the xlsxwriter engine
    with pd.ExcelWriter(output_path, engine='xlsxwriter') as writer:
        # Iterate through each sheet in the Excel file
        for sheet_name in excel_data.sheet_names:
            # Read the current sheet into a DataFrame, setting the first column as the index
            df = excel_data.parse(sheet_name, index_col=0)
            
            # Convert index to string if it's not already to handle string operations
            df.index = df.index.map(str)

            # Identify all rows containing 'FP' and 'FN' for swapping
            fp_rows = df.filter(like='_FP', axis=0)
            fn_rows = df.filter(like='_FN', axis=0)

            # Swap values between FP and FN rows for each corresponding pair
            for fp_index, fn_index in zip(fp_rows.index, fn_rows.index):
                # Temporary store FN row
                temp = df.loc[fn_index].copy()
                # Swap rows
                df.loc[fn_index] = df.loc[fp_index]
                df.loc[fp_index] = temp

            # Write the modified DataFrame back to the Excel file without adding an index column
            df.to_excel(writer, sheet_name=sheet_name, index=True, index_label=None)

    print(f"Swapped FP and FN rows in '{excel_path}' and saved to '{output_path}'.")

# Path to your existing Excel file
input_excel_path = '../output_cv_metrics/metrics.xlsx'
# Path where the modified Excel file will be saved
output_excel_path = '../output_cv_metrics/metrics_fixed.xlsx'

# Call the function
swap_fp_fn_rows(input_excel_path, output_excel_path)