我已经搜索了许多地方,但仍然无法以自己的逻辑提出,也无法在互联网上找到...
问题 我在执行EDA时有学生成绩数据集,但遇到了一个小问题
例如,为什么学生缺勤率为零,而其最终成绩却为零。 对于一个学生来说,要整整一年都出席,而在决赛中仍然保持零分是不可能的
所以我决定使用
过滤掉这两列中所有带有零的行dataset[(dataset['G3']==0)&(dataset['absences']==0)]
但是这返回了一个数据框 所以我尝试了
dataset.loc[(dataset['G3']==0)&(dataset['absences']==0),['G3','absences']]
这使我返回了两列满足条件的列,我想要的是替换“ G3”列
我试图用
替换它们dataset.loc[(dataset['G3']==0)&(dataset['absences']==0),['G3','absences']].replace(0,np.mean[dataset[['G3','absences']]])
这使我出错
function object cannot be subscriptable
我不知道该怎么办
我尝试了很多事情,但是仍然无法解决这个问题,任何解决方案都可能会帮助
预先感谢
答案 0 :(得分:1)
如果要用值的子集的平均值!= 0代替,则可以使用
dataset = pd.DataFrame({'G3': np.random.randint(0,3,100),
'absences' : np.random.randint(0,3,100)})
dataset.loc[(dataset['G3']==0)&(dataset['absences']==0),['G3', 'absences']] = [dataset.loc[(dataset['G3']!=0)]['G3'].mean(), dataset.loc[(dataset['absences']!=0)]['absences'].mean()]