在Pandas中使用query函数基于列值过滤行?

在Pandas中使用query函数基于列值过滤行?

要基于列值过滤行,我们可以使用query()函数。在该函数中,通过您希望过滤记录的条件设置条件。首先,导入所需的库−

import pandas as pd

以下是我们的团队记录数据−

Team = [['印度', 1, 100], ['澳大利亚', 2, 85], ['英格兰', 3, 75], ['新西兰', 4, 65], ['南非', 5, 50], ['孟加拉', 6, 40]]

从上面创建一个DataFrame并添加列−

dataFrame = pd.DataFrame(Team, columns=['国家', '排名', '分数'])

使用query()过滤“排名”等于5的记录−

dataFrame.query("排名 == 5"))

例子

以下是完整的代码−

import pandas as pd

# 以团队排名列表的形式提供的数据
Team = [['印度', 1, 100], ['澳大利亚', 2, 85], ['英格兰', 3, 75], ['新西兰', 4, 65], ['南非', 5, 50], ['孟加拉', 6, 40]]

# 创建DataFrame并添加列
dataFrame = pd.DataFrame(Team, columns=['国家', '排名', '分数'])

print"DataFrame...\n",dataFrame

# 使用query过滤行
print"\n获取排名为5的团队..\n",dataFrame.query("排名 == 5")

输出结果

这将产生以下输出−

DataFrame...
          国家   排名   分数
0         印度     1      100
1     澳大利亚     2       85
2       英格兰     3       75
3       新西兰     4       65
4         南非     5       50
5       孟加拉     6       40

获取排名为5的团队..
          国家   排名     分数
4          南非     5       50

例子

让我们看看另一个例子。在这里,我们有一个不同的条件来过滤行−

import pandas as pd

# 以团队排名列表的形式提供的数据
Team = [['印度', 1, 100], ['澳大利亚', 2, 85], ['英格兰', 3, 75], ['新西兰', 4, 65], ['南非', 5, 50], ['孟加拉', 6, 40]]

# 创建DataFrame并添加列
dataFrame = pd.DataFrame(Team, columns=['国家', '排名', '分数'])

print"DataFrame...\n",dataFrame

# 使用query过滤行
print"\n获取分数大于70且排名小于3的团队。\n"
print(dataFrame.query("分数 > 70 and 排名 <3"))

输出结果

这将产生以下输出−

DataFrame...
          国家   排名   分数
0         印度     1      100
1     澳大利亚     2       85
2       英格兰     3       753       新西兰     4       65
4         南非     5       50
5       孟加拉     6       40

获取分数大于70且排名小于3的团队。

国家     排名     分数
0       印度     1      100
1   澳大利亚     2       85

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程