python - 用中值替换 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()。
我还编写了不同的代码,但出现此错误或任何其他错误。
解决方案
如果我正确理解问题,这就是您要查找的内容:
data.loc[(data['damageDealt'] == 0.0)&(data['kills'] == 1),'damageDealt']=median
推荐阅读
- sql - 为什么 Salary > 0 不会导致表/索引扫描
- android - Coinbase oauth 2.0 重定向 uri android
- node.js - MAC - NPM - VSTS - 将注册表和令牌插入全局 npmrc 文件
- docker - 访问在 Docker For Desktop 中本地运行的 Kubernetes 服务?
- dialog - 显示工作表时,NSheet 控制器不会运行。
- html - 使用 flexbox 将我的徽标设置在左侧,将导航菜单设置在右侧
- python - Keras 模型溢出未知错误 | (IndexError:列表索引超出范围)
- elasticsearch - 在嵌套对象中追加数据
- regex - 从一个元素中获取文本,在另一个元素中显示
- c# - 将登录页面添加到 Swagger