Home > Enterprise >  Replace NaN values from DataFrame with values from series
Replace NaN values from DataFrame with values from series

Time:11-30

I am trying to implement code which will do the following with pandas.

def fill_in_capabilities(df):
    capacity_means = df.groupby("LV_Name").mean(["LEO_Capa", "GTO_Capa"])

    for row in df:
        if np.isnan(row["LEO_Capa"]):
            row["LEO_Capa"] = capacity_means[row["LV_Name"]]

    return df

Basically, for the rows in df where the value in the column "LEO_Capa" is NaN, I would like to replace the value there with a value from the series capacity_means, indexed by the value in the column "LV_Name" from the df with the missing value. How would one do this with pandas, as the code there does not work. Thanks.

CodePudding user response:

You can use a function:

def fill_in_capabilities(df: pd.DataFrame) -> pd.DataFrame:
    df[["LEO_Capa", "GTO_Capa"]] = df[["LEO_Capa", "GTO_Capa"]].fillna(
        df.groupby("LV_Name")[["LEO_Capa", "GTO_Capa"]].transform("mean")
    )

    return df


df = fill_in_capabilities(df)
  • Related