抱歉,如果这是重复,我没有找到类似的答案。
大图:我有一个带有 NaN 值的 df,我想用该列的估算中值替换它。但是,我发现 sklearn 中的内置输入器使用整个列的中值(或任何度量)。我的数据有标签,我想用仅属于该标签的其他样本中的该列的中值替换每个 NaN 值。
我可以通过将 df 拆分为每个标签的一个 df,对每个 df 进行插补,然后组合来做到这一点,但是这种逻辑不能很好地扩展。我最多可以上 20 节课,但我根本不相信这是“正确”的做法。
我想在不复制我的 df 的情况下执行此操作,方法是在拆分-应用-组合技术(或您认为可行的其他技术)中使用 groupby 对象。我感谢您的帮助。
示例 df:
r1 r2 r3 label
0 12 NaN 58 0
1 34 52 24 1
2 32 4 NaN 1
3 7 89 2 0
4 22 19 12 1
在这里,我希望 (0, r2) 处的 NaN 值等于标签 0 的该列的中值,即值 89(来自 3, r2)。
我希望 (2,r3) 处的 NaN 值等于标签 1 的该列的中值,即中值 (24, 12) 或 18。
成功结果示例:
r1 r2 r3 label
0 12 89 58 0
1 34 52 24 1
2 32 4 18 1
3 7 89 2 0
4 22 19 12 1