isin()重新认识
11:11
x是一个series,x.isin(y)返回的是个bool series,长度和x一样。
要从df中筛选出MisconceptionAId MisconceptionBId MisconceptionCId MisconceptionDId 同时包含在这个列表中的数据,也就是说,如果MisconceptionAId MisconceptionBId MisconceptionCId MisconceptionDId中有任意一个数不包含在misconception列表中,就剔除掉。非常优雅的实现:
misconception_columns = ['MisconceptionAId', 'MisconceptionBId',
'MisconceptionCId', 'MisconceptionDId']
misconception_list = mis_competition['MisconceptionId']
# 创建一个布尔掩码,检查每一行的所有Misconception列是否都在列表中或为NaN
mask = train_systhetic[misconception_columns].apply(
lambda x:
x.isin(misconception_list) | x.isna()
).all(axis=1)
filtered_df = train_systhetic[mask]
已使用 OneNote 创建。