如何删除只包含一个类别的行,而不具体删除它(通过df.person)?
编辑:必须删除所有针对每一行的“不好玩”的专用df.person。
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都会被移除。
category person
0 fun Meagan
1 fun Meagan
2 fun Meagan
6 fun Steve
7 not fun Steve
8 not fun Steve发布于 2020-01-22 20:24:06
首先,我们用boolean array为所有行创建一个not fun。
然后,我们用Groupby.transform(all)检查组是否有all not fun,并删除这些组:
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 Stevehttps://stackoverflow.com/questions/59867676
复制相似问题