【问题标题】:Drop infrequent values in column删除列中不常见的值
【发布时间】:2021-05-31 02:25:09
【问题描述】:

我有一个带有 ID 和类别的 Pandas 数据框以及后面的一些标志。 当我运行这个

df['category'].value_counts().tail(15)

我发现其中有十几个发生的次数不到 7 次。 所以我想从数据框中删除这些类别的行。

我想运行这样的东西,但它给了我错误:

df.drop(df[df.category.value_counts() < 7].index, inplace=True)

IndexingError:作为索引器提供的不可对齐的布尔系列(布尔系列的索引与索引对象的索引不匹配)。

如何从数据框中删除那些类别发生次数少于 7 次的行?

谢谢。

【问题讨论】:

    标签: pandas


    【解决方案1】:

    你想在这里使用isin

    counts = df.category.value_counts()
    
    # or
    # to_drop = counts.tail(15).index
    to_drop = counts[counts < 7].index
    
    df = df[~df['category'].isin(to_drop)]
    

    【讨论】:

      【解决方案2】:

      试试transform

      df = df[df.groupby('category')['category'].transform('count')>=7]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-02-27
        • 2019-05-24
        • 2022-01-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-06-27
        相关资源
        最近更新 更多