Pandas条件筛选 | Python技能树征题
Posted 周先森爱吃素
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Pandas条件筛选 | Python技能树征题相关的知识,希望对你有一定的参考价值。
相关知识
筛选是数据处理中非常频繁使用的功能,而Pandas对表格型数据(Pandas.DataFrame
)已经封装了非常完善的条件筛选功能,他们支持下面五种比较运算符和两种逻辑运算符。
运算符 | 含义 |
---|---|
> | 大于 |
< | 小于 |
== | 等于 |
>= | 大于等于 |
<= | 小于等于 |
& | 且 |
| | 或 |
多个比较运算符构成的条件语句之间可以用逻辑运算符进行组合,不过每个条件语句需要用圆括号括起来。
条件筛选语句选针对每一列进行,因此格式为df['列名'] 条件运算符 条件值
,如df['A'] > 10
。该条件可以直接传给dataframe用于行选择,因此形式为df[条件语句]
,如df[df['A'] > 10]
即可挑选出所有第A列大于10的行。上述用法等价于df.loc[条件语句]
, 不过,loc
方法可以进一步挑选输出列,如df.loc[df['A'] > 10, ['A', 'B']]
即表示挑选出所有第A列大于10 的行且只输出A和B两列的结果。
题目
给定下面的一个表格型数据的定义,试分别完成下面三道题。
名字 | 性别 | 语文成绩 | 数学成绩 | 英语成绩 |
---|---|---|---|---|
张三 | 男 | 61 | 90 | 59 |
赵四 | 女 | 91 | 92 | 93 |
王五 | 男 | 55 | 45 | 40 |
李六 | 女 | 90 | 60 | 59 |
刘七 | 男 | 90 | 90 | 90 |
林八 | 女 | 50 | 50 | 50 |
莫九 | 男 | 45 | 45 | 80 |
- 将所有性别为女的记录挑选出来
- 将所有语文和数学成绩及格且性别为男的记录挑选出来
- 将所有语文成绩大于等于90分或者数学成绩大于90分的记录挑选出来且只保留姓名、性别和英语成绩
思路及答案
三道题的答案都可以通过上面的条件筛选的知识点来实现,具体代码如下。
import pandas as pd
columns = ['name', '性别', '语文', '数学', '英语']
data = [
['张三', '男', 61, 90, 59],
['赵四', '女', 91, 92, 93],
['王五', '男', 55, 45, 40],
['李六', '女', 90, 60, 59],
['刘七', '男', 90, 90, 90],
['林八', '女', 50, 50, 50],
['莫九', '男', 45, 45, 80]
]
df = pd.DataFrame(data, columns=columns)
# 第一题,我们直接条件筛选
rst1 = df[df['性别'] == '女']
print(rst1)
# 第二题,多调节级联
rst2 = df[(df['语文'] > 60) & (df['数学'] > 60) & (df['性别'] == '男')]
print(rst2)
# 第三题,条件筛选并输出特定列
rst3 = df.loc[(df['语文'] >= 90) | (df['数学'] > 90), ['name', '性别', '英语']]
print(rst3)
运行结果如下。
name 性别 语文 数学 英语
1 赵四 女 91 92 93
3 李六 女 90 60 59
5 林八 女 50 50 50
name 性别 语文 数学 英语
0 张三 男 61 90 59
4 刘七 男 90 90 90
name 性别 英语
1 赵四 女 93
3 李六 女 59
4 刘七 男 90
Process finished with exit code 0
以上是关于Pandas条件筛选 | Python技能树征题的主要内容,如果未能解决你的问题,请参考以下文章
仅需6道题轻松掌握Python异常捕获 | Python技能树征题