【问题标题】:Drop pandas dataframe rows based on groupby condition根据 groupby 条件删除 pandas 数据帧行
【发布时间】:2020-02-28 11:33:16
【问题描述】:

我有一个如下所示的熊猫数据框

    text    name    target
0   str1    name1   1
1   str1    name2   3
2   str1    name2   3
3   str2    name1   2
4   str2    name1   2
5   str2    name1   4
6   str3    name3   3

我需要删除那些只出现一次目标类的行。在这种情况下,我需要删除行索引05,因为14 只出现一次。

我查看了this post 并尝试如下:

df[df.groupby(['target']).transform('sum') > 1]

但这似乎不起作用。谁能推荐一下?

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    你可以使用value_counts,映射回来过滤:

    print(df[df.target.map(df.target.value_counts()).gt(1)])
    

    输出:

       text   name  target
    1  str1  name2       3
    2  str1  name2       3
    3  str2  name1       2
    4  str2  name1       2
    6  str3  name3       3
    

    【讨论】:

      【解决方案2】:

      希望这就足够了:过滤掉目标计数不大于1的行

      df.groupby('target').filter(lambda x: x.count().gt(1).any())
      
          text    name    target
      1   str1    name2   3
      2   str1    name2   3
      3   str2    name1   2
      4   str2    name1   2
      6   str3    name3   3
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-07-07
        • 1970-01-01
        • 1970-01-01
        • 2021-08-28
        • 2021-04-02
        • 2022-01-09
        • 1970-01-01
        相关资源
        最近更新 更多