python - 多条件行删除
问题描述
我想选择满足以下条件的数据框的一个子集:我有一个数据框,它显示了三个学生不同测试的结果。一旦其中一名学生得到“差”的结果,他们就不能被考虑参加实验,需要从数据集中删除。我的数据框如下所示:
import pandas as pd
data = {'Name': ['Peter', 'Peter','Anna', 'Anna','Anna', 'Max'],
'Result': ["Good", "Good", "Good", "Good", "poor", "Very Good"],
}
df = pd.DataFrame (data, columns = ['Name','Points'])
这意味着我首先需要查看谁做得不好,然后删除包含该 Person 的每一行。在这个例子中我想要的结果是:
df_res = pd.DataFrame({'Name': ('Peter', 'Peter', 'Max', 'Max'),
'Result': ("Good", "Good", "Very Good")})
有人能帮我一下吗?特别是删除其中具有相应名称的所有行对我来说是一个障碍。
解决方案
查找Name
具有 s 的项目'poor'
Result
,然后使用它来过滤Name
s 不在该列表中的记录。
>>> df = pd.DataFrame(data) # leave out the columns parameter.
>>>
>>> df[~df.Name.isin(df[df.Result == 'poor'].Name.values)]
Name Result
0 Peter Good
1 Peter Good
5 Max Very Good
“布尔掩码”我想我们称之为。
我们对安娜是不是有点不公平——她的成绩比其他人都好。那又怎样——她今天过得很糟糕……
=) 无论如何...
您也可以专门使用该.drop()
方法:
>>> df.drop(index=df[df.Name.isin(df[df.Result == 'poor'].Name)].index)
Name Result
0 Peter Good
1 Peter Good
5 Max Very Good
推荐阅读
- c# - 第一次选择后如何清除我的列表
- google-apps-script - 在使用 Google 脚本授权时遇到问题,需要帮助远程更新许多(数十个)Google 表单
- ruby-on-rails - Rails 不允许的参数
- cmake - 我的 CMake 导入目标应该有依赖关系吗?
- node.js - Sequelize 在查询中添加“id”列,而我已经有一个定义为 PK 的列
- c# - XML 停止覆盖/保存多个条目
- c++ - 后台线程中的grpc服务器c ++
- kubernetes - ClamAV pod 未在通过 helm 部署的 Kubernetes 中启动
- c - 如何计算 4 点的颜色渐变?
- python - Django 模型查询;如何在外键上连接表格