首页 > 解决方案 > 用中值替换 DataFrame 中的错误值(由 2 个条件证明)。歧义错误

问题描述

我知道很多人都问过这个问题,有很多答案。但是这个问题有点不同,因为在这个问题中,我们有两个条件满足用中值替换值。

在我详细解释之前,我从 kaggle 中获取了这个数据集

https://www.kaggle.com/c/pubg-finish-placement-prediction/team

所以,

该数据集有两个特征,“damageDealt”和“kills”。惯例是,当我们对敌人造成伤害时,他死了并且没有任何伤害,您不能杀死。

令人惊讶的是,PUBG API 捕获了一些错误数据,这些数据使玩家在没有对敌人造成任何伤害的情况下杀死。

a = data[data['damageDealt'] == 0.0]
b=a[a['kills'] > 0]
b['kills']

在这里,我们有 4153 行。和

b['kills'].unique()

这将返回数组 [1,2,3]

我想将 'damageDealt' 中的所有 0.0 值替换为 'damageDealt' 的中值,其中杀伤分别为 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

这是我得到的错误。

ValueError:Series 的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()。

我还编写了不同的代码,但出现此错误或任何其他错误。

标签: pythonpandasnumpydataframe

解决方案


如果我正确理解问题,这就是您要查找的内容:

data.loc[(data['damageDealt'] == 0.0)&(data['kills'] == 1),'damageDealt']=median

推荐阅读