繁体   English   中英

根据 groupby 条件删除 Pandas 数据帧行

[英]Drop pandas dataframe rows based on groupby condition

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

    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只出现一次。

我查看了这篇文章并尝试了以下内容:

df[df.groupby(['target']).transform('sum') > 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

您可以使用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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM