我知道很多人问过这个问题,有很多答案。但是这个问题有点不同,因为在这个问题中,我们有两个条件满足用中值替换值。
在我详细解释之前,我已经从kaggle中获取了这个数据集
https://www.kaggle.com/c/pubg-finish-placement-prediction/team
所以
该数据集有两个特征,"伤害造成"和"杀死"。惯例是,当我们对敌人造成伤害时,他会死亡,没有任何伤害,你不能杀死。
令人惊讶的是,PUBG API捕获了一些故障数据,这使得玩家在不对敌人造成任何伤害的情况下杀死。
a = data[data['damageDealt'] == 0.0]
b=a[a['kills'] > 0]
b['kills']
在这里,我们有 4153 行。和
b['kills'].unique()
这将返回数组 [1,2,3]
我想将"伤害已造成">中的所有 0.0 值替换为该"伤害造成"的中值,其中击杀分别为 1、2 和 3。
而且,我不知道该怎么做。虽然,我已经写了一个代码,给了我错误。
median = data[data['kills'] == 1]['damageDealt'].median() # Finding median of 1 kills with some
# damageDealt
np.where(data['damageDealt'] == 0.0 and data['kills'] == 1 , median ) # replaceing value where kills
# is 1 but damageDealt is 0.0
这是我得到的错误。
值错误:序列的真值不明确。使用 a.empty、a.bool((、a.item((、a.any(( 或 a.all((。
我也写了不同的代码,但得到这个或任何其他错误。
如果我正确理解问题,这就是您要查找的内容:
data.loc[(data['damageDealt'] == 0.0)&(data['kills'] == 1),'damageDealt']=median