多条件行删除
multiple condition row dropping
我想 select 我的数据框的一个子集满足以下条件:我有一个数据框显示三个学生的不同测试结果。一旦其中一名学生获得结果 "poor",他们就不能被考虑用于实验,需要从数据集中删除。我的数据框如下所示:
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
"Boolean masking"我想我们称之为。
我们是不是对安娜有点不公平——她的成绩比其他人都好。那又怎样 - 她今天过得很糟糕...
=) 无论如何...
您也可以专门使用 .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
我想 select 我的数据框的一个子集满足以下条件:我有一个数据框显示三个学生的不同测试结果。一旦其中一名学生获得结果 "poor",他们就不能被考虑用于实验,需要从数据集中删除。我的数据框如下所示:
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
"Boolean masking"我想我们称之为。
我们是不是对安娜有点不公平——她的成绩比其他人都好。那又怎样 - 她今天过得很糟糕...
=) 无论如何...
您也可以专门使用 .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