多条件降行

我想从我的数据框中选择一个满足以下条件的子集。我有一个数据框,显示了三个学生的不同测试结果。只要其中一个学生的结果是 “差”,他们就不能被考虑在实验中,需要从数据集中删除。我的Dataframe是这样的。

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")}) 

谁能帮我一下?尤其是删除所有有对应名字的行,对我来说是一个障碍。

解决方案:

查找 Name的物品的数量。'poor' Result的记录,然后用它来过滤其 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

给TA打赏
共{{data.count}}人
人已打赏
未分类

sssd密码修改弹出窗口

2022-9-9 10:49:18

未分类

不知道该把3个与switchMap连锁的观测值的订阅放在哪里。

2022-9-9 10:49:20

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索