在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
极客教程