def replace_accessions(base_df: pd.DataFrame, match_df: pd.DataFrame) \ -> pd.DataFrame: """ Args: base_df: match_df: Returns: pd.DataFrame """ # In the DataFrame to match against, create a new column, "Accessions", # as a list of accession IDs, then "explode" into separate rows temp_df = match_df.assign(Accessions=match_df.Accession.str.split("; ")).\ explode("Accessions") base_df = base_df.merge(temp_df[["Accession", "Accessions"]], on="Accessions") base_df.Accessions = base_df.pop("Accession") return base_df.sort_values(["Expt", "N"])