注意
:我们也可以使用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中删除行:
df = df[df.assists > 8]
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中删除行:
df = df[(df.assists > 8) & (df.rebounds > 5)]
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中通过索引删除行