📅  最后修改于: 2023-12-03 14:55:39.445000             🧑  作者: Mango
在数据处理过程中,有时候需要按照某一列的值去筛选 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 行。具体选择哪一种方法取决于具体的需求和数据结构。至于哪一种方法更高效,需要在实际使用中进行比较。