要按照若干个列的组合条件筛选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)
上面的例子中,我们根据age
和gender
两个列的值筛选数据,并获得符合条件的行,即Charlie
和David
所在的行。
方法二:使用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 > 25
和gender == 'M'
两个条件,获得了符合条件的行,即Charlie
和David
所在的行。
通过以上两种方法,我们可以灵活地、高效地、简洁地完成对pandas数据的筛选工作。