首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >删除只包含一个类别的行- Pandas - Python

删除只包含一个类别的行- Pandas - Python
EN

Stack Overflow用户
提问于 2020-01-22 20:21:11
回答 1查看 591关注 0票数 0

如何删除只包含一个类别的行,而不具体删除它(通过df.person)?

编辑:必须删除所有针对每一行的“不好玩”的专用df.person

代码语言:javascript
复制
df = pd.DataFrame({'category': ['fun','fun','fun', 'not fun','not fun','not fun', 'fun', 'not fun','not fun'],
                   'person': ['Meagan', 'Meagan', 'Meagan', 'Caitlin', 'Caitlin', 'Caitlin', 'Steve', 'Steve','Steve']})
print(df)

      category   person
0      fun   Meagan
1      fun   Meagan
2      fun   Meagan
3  not fun  Caitlin
4  not fun  Caitlin
5  not fun  Caitlin
6      fun    Steve
7  not fun    Steve
8  not fun    Steve

编辑:想要的数据在下面。我想除掉凯特琳,因为她不是一直都很有趣。如果我偶尔移除任何不好玩的人,我会除掉史蒂夫,我不想这样做。我不能移除一组乐趣,因为Meagan和Caitlin都会被移除。

代码语言:javascript
复制
category    person
0   fun     Meagan
1   fun     Meagan
2   fun     Meagan
6   fun     Steve
7  not fun  Steve
8  not fun  Steve
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-22 20:24:06

首先,我们用boolean array为所有行创建一个not fun

然后,我们用Groupby.transform(all)检查组是否有all not fun,并删除这些组:

代码语言:javascript
复制
df['m'] = df['category'].eq('not fun')
df[~df.groupby('person')['m'].transform('all')].drop(columns='m')

  category  person
0      fun  Meagan
1      fun  Meagan
2      fun  Meagan
6      fun   Steve
7  not fun   Steve
8  not fun   Steve
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59867676

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档