我有一个熊猫数据帧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
应该优先于直接分配值,以避免烦人(有时是有用的("将值分配给副本"错误。