【问题标题】:Remove by rows from a data frame with respect to a list of values根据值列表从数据框中按行删除
【发布时间】:2021-06-23 04:25:56
【问题描述】:

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

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

【问题讨论】:

    标签: dataframe slice


    【解决方案1】:

    看起来 this 就是您要查找的内容。

    df[df['X'].isin(level_list)]
    

    【讨论】:

      【解决方案2】:
      df = df.loc[df['X'].apply(lambda x: x in level_list)]
      

      应该可以解决问题。

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

      您将获得整个 DataFrame 的“过滤器掩码”,然后使用 .loc

      应用过滤器掩码

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-07-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多