在Pandas中,要通过列值的条件在DataFrame中删除行,可以使用drop
函数结合布尔索引的方法实现。
具体步骤如下:
- 读取或创建数据,并生成DataFrame。
- 使用布尔索引选取需要删除的行,得到布尔数组。
- 将上一步得到的布尔数组当作参数传入
drop
函数中,并设置axis=0
删除行,生成新的DataFrame。
下面是一个示例,假设数据如下:
import pandas as pd
data = {'name': ['Tom', 'Jerry', 'Mickey', 'Minnie', 'Donald'],
'age': [20, 22, 25, 27, 30]}
df = pd.DataFrame(data)
print(df)
输出结果为:
name age
0 Tom 20
1 Jerry 22
2 Mickey 25
3 Minnie 27
4 Donald 30
现在需要删除年龄(age)大于等于 27 的行,即删除 Minnie 和 Donald 这两行数据。
首先,选出符合条件的行,使用布尔索引生成布尔数组。
bool_array = df['age'] >= 27
print(bool_array)
输出结果为:
0 False
1 False
2 False
3 True
4 True
Name: age, dtype: bool
然后,将上一步得到的布尔数组当作参数传入drop
函数中,把符合条件的行删除,生成新的DataFrame。
new_df = df.drop(index=df[bool_array].index, axis=0)
print(new_df)
输出结果为:
name age
0 Tom 20
1 Jerry 22
2 Mickey 25
上面的代码中,我们首先获取满足条件的行的索引值,然后将其作为drop
函数的参数。其中,axis=0
表示按行删除,index
参数表示要删除的索引数组。
当然,我们也可以在一步中直接把行数删除,比如:
new_df = df[df['age'] < 27]
print(new_df)
输出结果同上,表示返回年龄小于27的行的DataFrame。
以上就是通过列值的条件在DataFrame中删除行的完整攻略。