根据值列表从数据框中按行删除

Remove by rows from a data frame with respect to a list of values

我的数据框中有一个分类变量 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)

但是,数据框中的 none 行被删除。我需要一些帮助。提前致谢!

看起来 this 就是您要找的东西。

df[df['X'].isin(level_list)]
df = df.loc[df['X'].apply(lambda x: x in level_list)]

应该可以解决问题。

df['X'].apply(lambda x: x in level_list)

您正在为整个 DataFrame 获取一个“过滤器掩码”,然后使用 .loc

应用过滤器掩码