如何在数据帧上的某些条件下仅替换零

How to replace only zeroes with some conditions on dataframe

找了很多地方还是想不出自己的逻辑,网上也找不到...

问题 我在执行 EDA 时有学生表现数据集,我想出了一个小问题

比如,为什么 'absences' 为零的学生期末成绩为零.. 这几乎不可能让一个学生全年都在场并且在期末考试中仍然得零分

所以我决定使用

过滤掉这两列中所有带零的行
dataset[(dataset['G3']==0)&(dataset['absences']==0)]

但这返回了一个数据框 所以我尝试了

dataset.loc[(dataset['G3']==0)&(dataset['absences']==0),['G3','absences']]

返回了满足条件的两列,我想要的是替换 'G3' 列 zeroes 和 'absences' 列 zeroes 将被替换为各自的方法并且 也不会干扰数据帧

我试着用

替换它们
dataset.loc[(dataset['G3']==0)&(dataset['absences']==0),['G3','absences']].replace(0,np.mean[dataset[['G3','absences']]])

这让我出错

function object cannot be subscriptable 

我不知道该怎么办

我已经尝试了很多方法,但仍然无法解决这个问题,任何解决方案都可能有所帮助

提前致谢

如果您想用值子集的平均值替换!= 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()]