仅使用 panda 替换数据帧中的值(不使用 numpy)



我有一个熊猫数据帧df,如下所示。

INDEX NAME    AGE  HEIGHT  ENGLISH  
0     a      19.0       5      NaN     
1     g      NaN        2    100.0   
2     j      82.0       2     NaN  

我想用年龄平均值替换 AGE 下的"NaN",用另外两个值替换英语下的"NaN"。这有可能不使用 numpy 和只使用熊猫吗?

是的,您可以使用df['column_name'].mean() .将其与fillna()功能相结合,您将获得所需的内容:

df = pd.DataFrame({'Age' : [19.0, np.nan, 82.0], 'ENGLISH' : [np.nan, 100.0, np.nan]})
df.fillna(value = {'Age' : df['Age'].mean(), 'ENGLISH' : df['ENGLISH'].mean()},
          inplace = True)

     Age   ENGLISH
0   19.0    100.0
1   50.5    100.0
2   82.0    100.0

是的,它是:

df.loc[df['AGE'].isna(), 'AGE'] = df['AGE'].mean()
df.loc[df['ENGLISH'].isna(), 'ENGLISH'] = [21, 76]

如您所见,语法与numpy非常相似。不是使用整数索引为列编制索引,而是使用列的特定名称为列编制索引。此外,使用.loc应该优先于直接分配值,以避免烦人(有时是有用的("将值分配给副本"错误。

最新更新