多条件行删除

2024-09-24 22:24:44 发布

您现在位置: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'])

这意味着我首先需要查看谁做得很差,然后删除其中包含该人的每一行。在这个例子中,我期望的结果是:

df_res = pd.DataFrame({'Name': ('Peter', 'Peter', 'Max', 'Max'), 
                   'Result': ("Good", "Good", "Very Good")}) 

有人能帮我吗?尤其是删除其中包含相应名称的所有行对我来说是一个障碍


Tags: 数据namedataframedfdataresult条件学生
1条回答
网友
1楼 · 发布于 2024-09-24 22:24:44

查找Name个具有'poor'{}的项,然后使用该项筛选Name不在该列表中的记录

>>> 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

相关问题 更多 >