diff --git a/sklbench/report/implementation.py b/sklbench/report/implementation.py index 28fa2bb0..3d419048 100644 --- a/sklbench/report/implementation.py +++ b/sklbench/report/implementation.py @@ -16,8 +16,10 @@ import argparse import json +from functools import reduce from typing import Dict, List +import numpy as np import openpyxl as xl import pandas as pd from openpyxl.formatting.rule import ColorScaleRule @@ -165,7 +167,12 @@ def select_comparison(i, j, diffs_selection): df = input_df.set_index(index_columns) unique_indices = df.index.unique() splitted_dfs = split_df_by_columns(input_df, diff_columns) - splitted_dfs = {key: df.set_index(index_columns) for key, df in splitted_dfs.items()} + common_cols = reduce(np.intersect1d, [df.columns for df in splitted_dfs.values()]) + df_specific_cols = np.setdiff1d(index_columns, common_cols) + splitted_dfs = { + key: df.assign(**{col: None for col in df_specific_cols}).set_index(index_columns) + for key, df in splitted_dfs.items() + } # drop results with duplicated indices (keep first entry only) for key, splitted_df in splitted_dfs.items(): @@ -181,6 +188,9 @@ def select_comparison(i, j, diffs_selection): # compared values for i, (key_ith, df_ith) in enumerate(splitted_dfs.items()): for j, (key_jth, df_jth) in enumerate(splitted_dfs.items()): + common_indexes = np.intersect1d(df_ith.index, df_jth.index) + df_ith = df_ith.loc[common_indexes] + df_jth = df_jth.loc[common_indexes] if select_comparison(i, j, diffs_selection): comparison_name = f"{key_jth} vs {key_ith}" for column in df_ith.columns: @@ -196,7 +206,9 @@ def select_comparison(i, j, diffs_selection): df[f"{comparison_name}\n{column} is equal"] = ( df_ith[column] == df_jth[column] ) - df = df.reset_index() + if len(df_specific_cols): + df.index = df.index.droplevel(list(df_specific_cols)) + df = df.dropna(axis=0, how="all", ignore_index=False).reset_index() # move to multi-index df = df[reorder_columns(list(df.columns))] df.columns = [ pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy