最近遇到一个场景,需要从excel表中选取或剔除部分符合条件的数据。并且条件为离散值。
例如有一个成绩表,记录一个年级中600位同学的各科成绩,最左边一列为姓名,因此这列每个值都不相同。如果有一列100人的名单,从600人的大表中找出这100人的成绩记录,如何实现呢?
我们先看看一条的情况。
找出张三的各科成绩
df[df['student_name'] == '张三']
选取一条记录非常简单,类似的,选取多条记录我们很容易想到用判断元素是否在列表中的形式,将100人的名单变成一个列表,选取在列表中的人名
df[df['student_name'] in names]
由于df['student_name']不是单个元素,因此会报错:
我们可以用DataFrame的isin()方法,注意不要忘记括号
df[df['student_name'].isin(names)]
names为100个人名的列表,这时100位学生的成绩表就选取出来了。
若需要选取不符合条件的记录,即“取反”,加上'~'即可
df[~df['student_name'].isin(names)]