pandas按若干个列的组合条件筛选数据的方法

  • Post category:Python

要按照若干个列的组合条件筛选pandas数据,可以使用pandas中的DataFrame.query()函数或DataFrame.loc[]函数。这两个函数都可以根据指定条件筛选DataFrame中的数据。

方法一:使用DataFrame.query()函数

DataFrame.query()函数可以根据字符串形式的查询表达式,筛选并返回DataFrame中符合条件的数据。查询表达式中需要指定多个列及其对应的值,如下所示:

import pandas as pd

# 构造测试数据
df = pd.DataFrame({
    'name': ['Alice', 'Bob', 'Charlie', 'David'],
    'age': [20, 30, 25, 35],
    'gender': ['F', 'M', 'M', 'M'],
    'score': [80, 90, 85, 95]
})

# 按照多个列的值筛选数据
query_string = "age > 25 and gender == 'M'"
result = df.query(query_string)
print(result)

上面的例子中,我们根据agegender两个列的值筛选数据,并获得符合条件的行,即CharlieDavid所在的行。

方法二:使用DataFrame.loc[]函数

DataFrame.loc[]函数可以根据行和列的标签,筛选并返回DataFrame中符合条件的数据。在loc函数中,我们需要使用布尔条件来进行数据的筛选,因此需要使用&|等布尔运算符将多个列和其对应条件连接起来,如下所示:

import pandas as pd

# 构造测试数据
df = pd.DataFrame({
    'name': ['Alice', 'Bob', 'Charlie', 'David'],
    'age': [20, 30, 25, 35],
    'gender': ['F', 'M', 'M', 'M'],
    'score': [80, 90, 85, 95]
})

# 按照多个列的值筛选数据
result = df.loc[(df.age > 25) & (df.gender == 'M')]
print(result)

上述代码中,我们使用&运算符连接了age > 25gender == 'M'两个条件,获得了符合条件的行,即CharlieDavid所在的行。

通过以上两种方法,我们可以灵活地、高效地、简洁地完成对pandas数据的筛选工作。