Ejemplo n.º 1
0
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"])