微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

根据列值的计数从 df 中删除整行

如何解决根据列值的计数从 df 中删除整行

我有以下 df:

d = {'animal': ['lion','dog','cat','lion','shark','shark'],'age': [3,4,9,10,8,5,9]}

df_1 = pd.DataFrame(data=d)

enter image description here

我的目标是:

enter image description here

换句话说,如果来自 'animal' 列的值重复 3 次或更多,则从 df 中删除整行。在这种情况下: (lion:3,shark:2,cat:2,dog:1) -- 移除了狮子

我该如何解决这个问题?我正在迭代,但我被卡住了。有没有系列方法?如何接近?

解决方法

试试:

m=df_1['animal'].value_counts().ge(3)
#create a condition to check if the count of particular value is greater then or eq to 3 or not

最后:

out=df_1[~df_1['animal'].isin(m[m].index)]
#Finally Filter out result

out 的输出:

    animal  age
1   dog     4
2   cat     9
4   shark   8
5   cat     5
7   shark   9

如果需要,使用 reset_index() 方法:

out=out.reset_index(drop=True)
,

您可以将 GroupBy.transformcount 一起使用并应用布尔屏蔽。

m = df_1.groupby('animal')['animal'].transform('count').lt(3)
print(df_1[m])

  animal  age
1    dog    4
2    cat    9
4  shark    8
5    cat    5
7  shark    9

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。