根据类型 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"))
我有一个 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"))