根据另一列中的值填充熊猫数据框中的缺失数据

时间:2019-09-08 21:22:13

标签: python pandas dataframe

我正在填充我拥有的熊猫数据框中的缺失值。最简单的情况是在缺少值的整个列上使用 df.fillna()。这可行,但是我想通过添加条件来扩展它。

即,我根据类别计算中位数,如果缺少的值具有Label ='A',那么它将用具有Label ='A'的所有值的中位数填充

同样,如果一个值具有Label ='B',则该值将被所有具有Label ='B'的值的中位数填充

下面是可行的代码。

df = pd.DataFrame([[20,'A'],[24,'B'],[23,'A'],[22,'B'],[np.nan,'A'],[24,'B'],[np.nan,'B']],columns=['Value','Label'])

A_median = np.nanmedian(df[df['Label']=='A']['Value'])
B_median = np.nanmedian(df[df['Label']=='B']['Value'])

当前数据框为:

    Value   Label
0   20.0    A
1   24.0    B
2   23.0    A
3   22.0    B
4   NaN     A
5   24.0    B
6   NaN     B

所需的输出是:

    Value   Label
0   20.0    A
1   24.0    B
2   23.0    A
3   22.0    B
4   21.5    A
5   24.0    B
6   24.0    B

我尝试了以下操作,但它导致所有其他值均为NaN:

df['Value'] = df[df['Label'] == 'A']['Value'].fillna(A_median)

预先感谢您的帮助!如果您需要更多信息,请告诉我:)

编辑:我知道有人问过类似的问题,但我主要是想了解如何设置值而不会导致其他类别为空。

0 个答案:

没有答案