我有下面一个名为df
的数据帧,我想将数据帧子集设置为仅id,其中列is_signup
有1和0。以下示例将删除id
=1,因为它只有1(而不是0(。
id tag is_signup
1 Button 1
1 Circle 1
2 Button 1
2 Circle 0
2 Diamond 1
3 Circle 0
3 Button 1
预期输出:
id tag is_signup
2 Button 1
2 Circle 0
2 Diamond 1
3 Circle 0
3 Button 1
我该怎么做?我觉得分组会有帮助吗?但不确定如何正式进行
您也可以使用groupby-filter
直接检查is_signup.nunique()
:
df.groupby('id').filter(lambda x: x.is_signup.nunique() == 2)
# id tag is_signup
# 2 2 Button 1
# 3 2 Circle 0
# 4 2 Diamond 1
# 5 3 Circle 0
# 6 3 Button 1
由于列is_signup
是二进制的,并且只能有2个可能的值,我们可以在这里用nunique
来groupby+transform
,然后布尔索引检查vaue是否为2(1和0(:
df[df['is_signup'].groupby(df['id']).transform('nunique').eq(2)]
id tag is_signup
2 2 Button 1
3 2 Circle 0
4 2 Diamond 1
5 3 Circle 0
6 3 Button 1