📌  相关文章
📜  根据列值删除 Pandas 中的 DataFrame 行 - Python (1)

📅  最后修改于: 2023-12-03 14:55:39.445000             🧑  作者: Mango

根据列值删除 Pandas 中的 DataFrame 行 - Python

在数据处理过程中,有时候需要按照某一列的值去筛选 DataFrame 中的数据。这时候就需要使用 Pandas 中的 drop() 方法删除指定的行。下面介绍一下如何根据列值删除 Pandas 中的 DataFrame 行。

方法一

使用 drop() 方法删除指定行。可以先按照要删除的列的条件筛选出需要删除的行的 index,然后调用 drop() 方法删除这些行。示例代码如下:

import pandas as pd

# 创建示例 DataFrame
data = {'name': ['Alice', 'Bob', 'Charlie', 'David', 'Ella'], 
        'age': [23, 25, 28, 31, 24],
        'gender': ['F', 'M', 'M', 'M', 'F']}
df = pd.DataFrame(data)

# 根据 gender 列的值筛选出需要删除的行的 index
to_drop_index = df[df['gender'] == 'M'].index

# 在 df 中删除这些行
df = df.drop(to_drop_index)

print(df)

运行结果如下:

      name  age gender
0    Alice   23      F
4     Ella   24      F

在上面的例子中,我们首先根据 gender 列的值筛选出所有值为 M 的行的 index,然后使用 drop() 方法将这些行从 DataFrame 中删除。最后打印出删除行后的 DataFrame。

方法二

使用 query() 方法删除指定行。query() 方法可以传入一个字符串,实现复杂的查询和筛选功能。如果要根据某一列的值删除指定行,就可以使用 query() 方法。示例代码如下:

import pandas as pd

# 创建示例 DataFrame
data = {'name': ['Alice', 'Bob', 'Charlie', 'David', 'Ella'], 
        'age': [23, 25, 28, 31, 24],
        'gender': ['F', 'M', 'M', 'M', 'F']}
df = pd.DataFrame(data)

# 使用 query 方法删除 gender 列的值为 M 的行
df = df.query('gender != "M"')

print(df)

运行结果如下:

    name  age gender
0  Alice   23      F
4   Ella   24      F

在上面的例子中,我们使用 query() 方法删除了 gender 列的值为 M 的行。具体来说,我们调用了 df.query('gender != "M"') 方法,筛选出所有 gender 列的值不为 M 的行,并将这些行组成新的 DataFrame 返回。最后打印出删除行后的 DataFrame。

总之,上面的两种方法都可以根据列值删除 Pandas 中的 DataFrame 行。具体选择哪一种方法取决于具体的需求和数据结构。至于哪一种方法更高效,需要在实际使用中进行比较。