我的数据框中有一个分类变量 X,它包含 10 个级别。我已经用这 10 个级别中的 3 个构建了一个列表。对于变量级别不在列表中的所有行,我想从数据框中删除行。
我试过了:
level_list= ['l1','l2','l3']
for i in range(df.shape[0]):
if (df['X'].iloc[i] in level_list) == False:
df.drop(i, axis=0)
然而,数据框中的任何行都没有被丢弃。我需要一些帮助。提前致谢!
答案 0 :(得分:1)
看起来 this 正是您要找的。p>
df[df['X'].isin(level_list)]
答案 1 :(得分:1)
df = df.loc[df['X'].apply(lambda x: x in level_list)]
应该可以解决问题。
与
df['X'].apply(lambda x: x in level_list)
您将获得整个 DataFrame 的“过滤器掩码”,然后使用 .loc
应用过滤器掩码