根据类型 period[M] 的索引用平均值填充 NaN

Fill NaN with average based on index of type period[M]

我有一个 df,其中的索引是 dtype period[M],看起来像这样:

month outcome MKT
2020-01 W 6
2020-01 W 4
2020-03 W NAN
2020-03 L NAN
2020-02 L 4
2020-02 L 7

当月份和结果相同时,我想用列中值的平均值替换 MKT 列的所有 NAN 值。这些样本的预期结果是:

month outcome MKT
2020-01 W 6
2020-01 W 4
2020-03 W 5
2020-03 L 5.5
2020-02 L 4
2020-02 L 7

我试过以下方法:

df["MKT"] = df.MKT.fillna(groupby(pd.Grouper(freq="M")).df.MKT.mean())

但是我得到了错误

NameError: name 'groupby' is not defined

我看过一些针对datetype情况的解决方案,但是我有dtype period[M].

replace all NAN values of the column MKT by the average of the values in the column when the month and the outcome are the same

这听起来像你在找

df.MKT = df.MKT.fillna(df.groupby(["month", "outcome"]).MKT.transform("mean"))

但您的预期输出看起来像

df.MKT = df.MKT.fillna(df.groupby("outcome").MKT.transform("mean"))