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

时间:2021-03-26 10:38:49

标签: dataframe slice

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

然而,数据框中的任何行都没有被丢弃。我需要一些帮助。提前致谢!

2 个答案:

答案 0 :(得分:1)

看起来 this 正是您要找的。

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

应用过滤器掩码
相关问题