下面我将详细讲解pandas如何像SQL一样使用WHERE IN查询条件。
- SQL中的WHERE IN查询条件
在SQL中,WHERE IN查询条件用于筛选出某一列中包含指定多个值的行,其语法形式通常如下:
SELECT * FROM table_name WHERE column_name IN (value1, value2, value3, ...);
其中table_name
是表名,column_name
是要筛选的列名,value1
、value2
、value3
等是要匹配的值,多个值之间用逗号分隔。
例如,查询学生表中学号为123、456和789的学生信息,可以使用以下SQL语句:
SELECT * FROM student WHERE id IN (123, 456, 789);
- Pandas中的WHERE IN查询条件
Pandas中的DataFrame对象提供了类似SQL的查询功能,可以通过在列上使用.isin()方法实现WHERE IN查询条件。其语法形式如下:
df[df['column_name'].isin([value1, value2, value3, ...])]
其中,df
是DataFrame对象,column_name
是要筛选的列名,value1
、value2
、value3
等是要匹配的值,多个值用列表形式传递。
例如,假设现在有一个学生成绩表,其中包含了学生的姓名、年龄、考试科目和成绩四个字段,现在要查询所有数学成绩在80分及以上、英语成绩在60分及以上的学生信息,可以使用以下代码:
import pandas as pd
# 创建DataFrame对象
data = {
'姓名': ['张三', '李四', '王五', '赵六', '孙七'],
'年龄': [20, 22, 21, 20, 23],
'科目': ['数学', '英语', '数学', '英语', '数学'],
'成绩': [75, 80, 85, 65, 90],
}
df = pd.DataFrame(data)
# 查询满足条件的行
df_math_eng = df[(df['科目'] == '数学') & (df['成绩'] >= 80) | (df['科目'] == '英语') & (df['成绩'] >= 60)]
# 输出结果
print(df_math_eng)
输出结果如下:
姓名 年龄 科目 成绩
1 李四 22 英语 80
2 王五 21 数学 85
4 孙七 23 数学 90
另外,如果需要查询的值是在另一个DataFrame对象中的话,可以先定义一个包含要查询的值的DataFrame对象,然后在查询条件中使用该DataFrame对象,如下所示:
import pandas as pd
# 创建DataFrame对象
students = {
'姓名': ['张三', '李四', '王五', '赵六', '孙七'],
'年龄': [20, 22, 21, 20, 23],
'学号': ['001', '002', '003', '004', '005'],
}
scores = {
'学号': ['002', '004', '005'],
'数学': [80, 90, 85],
'英语': [85, 75, 90],
}
df_stu = pd.DataFrame(students)
df_sco = pd.DataFrame(scores)
# 查询满足条件的行
df_math_eng = df_sco[df_sco['学号'].isin(df_stu[df_stu['年龄']>=22]['学号'])]
# 输出结果
print(df_math_eng)
输出结果如下:
学号 数学 英语
0 002 80 85
1 004 90 75
2 005 85 90
以上就是Pandas如何像SQL一样使用WHERE IN查询条件的完整攻略了。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:pandas 像SQL一样使用WHERE IN查询条件说明 - Python技术站