-
Notifications
You must be signed in to change notification settings - Fork 54
/
DataFiltering.py
36 lines (28 loc) · 1.18 KB
/
DataFiltering.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# pandasVersusExcel
# http://sa.mentorx.net/course/89/tasks
# 第八课 数据筛选、过滤
# 2018-10-18
import pandas as pd
Students = pd.read_excel('./Students.xlsx',index_col='ID')
print('----原始数据----')
print(Students)
# Age 大于等于 18 小于 30
def age_18_to_30(age):
return 18 <= age < 30
# 成绩在 85 到 100 之间
def level_a(score):
return 85 <= score <= 100
# 筛选 Age 大于等于 18 小于 30 的学生
Students = Students.loc[Students['Age'].apply(lambda age:18 <= age < 30)]
print('\n----筛选 Age 大于等于 18 小于 30 的学生----')
print(Students)
# 筛选 Age 大于等于 18 小于 30 成绩在 85 到 100 之间 的学生
Students = Students.loc[Students.Age.apply(age_18_to_30)] \
.loc[Students.Score.apply(level_a)]
print('\n----筛选 Age 大于等于 18 小于 30 成绩在 85 到 100 之间 的学生----')
print(Students)
# 补充知识点
# 1. Students['Age'] 的写法可以简写为 Students.Age
# 2. age_18_to_30 函数可以用 lambda 表达式代替,因此
# .apply(age_18_to_30) 可以简写为 .apply(lambda age:18 <= age < 30)
# 3. Python 中 如遇表达式过长可以使用 ' \'(空格加正斜杠加回车)的方式换行