相关文章推荐
被表白的小笼包  ·  python sqlite ...·  1 年前    · 
严肃的石榴  ·  解决No thread-bound ...·  1 年前    · 
难过的大熊猫  ·  group by ...·  1 年前    · 

注意 :我们也可以使用drop()函数来删除DataFrame中的行,但是这个函数已经被证明比直接将DataFrame分配给它的一个过滤版本要慢得多。

下面的例子展示了如何用下面的pandas DataFrame来实际使用这个语法:

import pandas as pd
#create DataFrame
df = pd.DataFrame({'team': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],
                   'pos': ['G', 'G', 'F', 'F', 'G', 'G', 'F', 'F'],
                   'assists': [5, 7, 7, 9, 12, 9, 9, 4],
                   'rebounds': [11, 8, 10, 6, 6, 5, 9, 12]})
#view DataFrame
	team	pos	assists	rebounds
0	A	G	5	11
1	A	G	7	8
2	A	F	7	10
3	A	F	9	6
4	B	G	12	6
5	B	G	9	5
6	B	F	9	9
7	B	F	4	12

方法1:基于一个条件删除行

下面的代码展示了如何根据一个条件在DataFrame中删除行:

#drop rows where value in 'assists' column is less than or equal to 8
df = df[df.assists > 8] 
#view updated DataFrame
	team	pos	assists	rebounds
3	A	F	9	6
4	B	G	12	6
5	B	G	9	5
6	B	F	9	9

任何在'assists'列中的值小于或等于8的行都被从DataFrame中删除。

方法2:基于多个条件删除行

下面的代码显示了如何基于多个条件在DataFrame中删除行:

#only keep rows where 'assists' is greater than 8 and rebounds is greater than 5
df = df[(df.assists > 8) & (df.rebounds > 5)]
#view updated DataFrame
	team	pos	assists	rebounds
3	A	F	9	6
4	B	G	12	6
5	B	G	9	5
6	B	F	9	9

我们在DataFrame中保留的唯一行是助攻值大于8篮板值大于5的行。

请注意,我们也可以使用**|**操作符来应用 "或 "过滤器。

#only keep rows where 'assists' is greater than 8 or rebounds is greater than 10
df = df[(df.assists > 8) | (df.rebounds > 10)]
#view updated DataFrame
	team	pos	assists	rebounds
0	A	G	5	11
3	A	F	9	6
4	B	G	12	6
5	B	G	9	5
6	B	F	9	9
7	B	F	4	12

我们在DataFrame中保留的唯一记录是那些助攻值大于8 篮板值大于10的记录。

任何不符合这些条件之一的行都会被删除。

下面的教程解释了如何在pandas中执行其他常见操作:

如何在Pandas中删除包含特定值的行
如何在Pandas中删除包含特定字符串的行
如何在Pandas中通过索引删除行