如何在数据帧上的某些条件下仅替换零
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()]
找了很多地方还是想不出自己的逻辑,网上也找不到...
问题 我在执行 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()]