最近遇到一個場景,需要從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)]