Fillna() 未针对 groupby() 估算值

Fillna() not imputing values with respect to groupby()

我正在尝试使用 fillna() 和 transform() 来估算与 phone 的 'release_year' 和 'brand_name' 相关的列中的一些缺失值,但是在 运行 我的代码之后,我仍然有相同的缺失值计数。

这是我在 运行 代码之前的缺失值计数和百分比:

这是我 运行 估算的代码 'main_camera_mp' 和结果(仅供参考,我将上述数据帧复制到 df2):

df2['main_camera_mp'] = df2['main_camera_mp'].fillna(value = df2.groupby(['release_year','brand_name'])['main_camera_mp'].transform('mean'))

我猜你的插补方法不适合你的数据,因为当 main_camera_mp 缺失时,release_year-brand_name 组中的所有条目都缺失。因此,从作为填充值传递的 groupby 对象派生的系列本身将具有这些组的缺失值。

这里有一个简单的例子来说明这是如何发生的:

import numpy as np
import pandas as pd

df2 = pd.DataFrame({'main_camera_mp': [1, 2, 3, np.nan, 5, 6, np.nan, np.nan],
                    'release_year': [2000, 2000, 2001, 2001, 2000, 2000, 2001, 2001],
                    'brand_name': ['a', 'b', 'a', 'b', 'a', 'b', 'a', 'b']})

df2['main_camera_mp'] = df2['main_camera_mp'].fillna(value = 
    df2.groupby(['release_year', 'brand_name'])['main_camera_mp'].transform('mean'))
df2
    main_camera_mp  release_year    brand_name
0   1.0             2000            a
1   2.0             2000            b
2   3.0             2001            a
3   NaN             2001            b
4   5.0             2000            a
5   6.0             2000            b
6   3.0             2001            a
7   NaN             2001            b

请注意,索引 6 处的值是按预期估算的,但其他两个缺失值不是,因为它们的组没有 non-missing 值。