根据groupby条件删除熊猫数据框行

时间:2020-02-28 03:18:16

标签: python pandas

我有一个像下面的pandas数据框

    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]

但这似乎不起作用。有人可以建议吗?

2 个答案:

答案 0 :(得分:1)

希望已足够:过滤掉目标计数不大于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

答案 1 :(得分: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