如何通过列值的条件在DataFrame中删除行

  • Post category:Python

在Pandas中,要通过列值的条件在DataFrame中删除行,可以使用drop函数结合布尔索引的方法实现。

具体步骤如下:

  1. 读取或创建数据,并生成DataFrame。
  2. 使用布尔索引选取需要删除的行,得到布尔数组。
  3. 将上一步得到的布尔数组当作参数传入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中删除行的完整攻略。