删除仅包含一个类别(Pandas-Python)的行
如何删除只包含一个类别的行而不具体删除它(by删除仅包含一个类别(Pandas-Python)的行,pandas,Pandas,如何删除只包含一个类别的行而不具体删除它(bydf.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'
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
首先,我们使用
not fun
为所有行创建一个布尔数组
然后我们检查Groupby.transform(all)
with groups haveall 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 Steve
首先,我们使用not fun
为所有行创建一个布尔数组
然后我们检查Groupby.transform(all)
with groups haveall 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 Steve
嗨,尔凡,谢谢你的意见。我不得不稍微调整一下这个问题,因为我不能在巢穴中使用nunique。任何帮助都将不胜感激。嗨,尔凡,谢谢你的投入。我不得不稍微调整一下这个问题,因为我不能在巢穴中使用nunique。任何帮助都将不胜感激。