pandas做基础筛选
比如以下一个分数表
我们对这个分数表进行一些条件筛选
比如,年龄在30-35之间的,分数在60-70之间的数据
def Agefu_30_35(x):
return 30<= x<= 35
def Score_60_70(x):
return 60<= x <= 70
score = pd.read_excel('D:/Pandas/score.xlsx',index_col='ID')
score = score.loc[score['age'].apply(Agefu_30_35)].loc[score['score'].apply(Score_60_70)]
步骤就是在前面写上我们的条件函数Agefu_30_35和Score_60_70
用的时候使用的是loc函数,其实就是pandas的一个定位函数。
再按照apply函数进行筛选,两个条件直接写另一个loc
注意使用apply函数的时候后面不要写参数了。
结果:
简写方式:
就是把方括号冒号去掉直接写列名,这是python的用法
score = score.loc[score.age.apply(Agefu_30_35)].loc[score.score.apply(Score_60_70)]
优化代码,使用lambda表达式,前面不用写那俩函数
完整代码
score = pd.read_excel('D:/Pandas/score.xlsx',index_col='ID')
score = score.loc[score.age.apply(lambda a:30<=a<=35)]\
.loc[score.score.apply(lambda x:60<= x <= 70)]
print(score)
其中的正斜线\的作用是在python中换行。