[英]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
我需要删除那些只出现一次目标类的行。 在这种情况下,我需要删除行索引0
和5
,因为1
和4
只出现一次。
我查看了这篇文章并尝试了以下内容:
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.