只包括一个id有2个标志的id(PANDAS)



我有下面一个名为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个可能的值,我们可以在这里用nuniquegroupby+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

最新更新