删除groupby中不包含元素的组(Python)

删除groupby中不包含元素的组(Python),python,pandas,Python,Pandas,让数据帧如下所示: import pandas as pd df = pd.DataFrame({"name":["A", "A", "B" ,"B", "C", "C"], "nickname":["X","Y","X","Z","Y", "Y"]} 如何将df分组并删除不包含至少一个“X”的组(C) 谢谢您可以使用pandas中的分组依据过滤器: df.groupby('name').filter(lambda g: any(g.nickname =

让数据帧如下所示:

import pandas as pd

df = pd.DataFrame({"name":["A", "A", "B" ,"B", "C", "C"],
                   "nickname":["X","Y","X","Z","Y", "Y"]}
如何将df分组并删除不包含至少一个“X”的组(C)


谢谢

您可以使用pandas中的分组依据
过滤器

df.groupby('name').filter(lambda g: any(g.nickname == 'X')) 

#       name   nickname
# 0        A          X
# 1        A          Y
# 2        B          X
# 3        B          Z

谢谢你。我不知道“any”函数如何删除组,如果它只包含答案的后续注释中提到的XA,
filter
不是groupby对象,那么如果要筛选然后拥有这些组,则需要在上述命令末尾添加另一个
groupby
。例如,
df.groupby('name').filter(lambda g:any(g.昵称='X')).groupby('name')
同样,在我的情况下,我不得不将其重新构造成这样才能工作:
df.groupby('name').filter(lambda g:(g.昵称='X').any())
对我来说似乎应该是一样的,可能是一个导入问题,但这留给后面的人。