如何删除具有特定计数条件的列

how to delete columns with a certain count condition

我正在尝试删除 id,它不包含一个月中的所有 3 个月。 例如,我们将 df 设为:

id       month   
100        1
100        2
100        3
101        2
102        3

然后我想要新的 df 就像 id 100 一样:

id       month   
100        1
100        2
100        3

所以我所做的是

df.groupby(['id'].month.count() == 3

这给了我

id        month
100        True
101        False
102        False

我目前不知道如何继续。

您可以在与 3:

比较后对布尔输出使用 groupby+transform('nunique') 和切片
df[df.groupby('id')['month'].transform('nunique').eq(3)]

输出:

    id  month
0  100      1
1  100      2
2  100      3

注意。如果您确定没有重复的月份,transform('count') 也可以

我认为你很接近,但你需要稍微修改一下你的代码。使用您的代码,但将 countnunique 交换,这将 return 一个 series 显示您的 ID TrueFalse 取决于他们是否拥有所有个月。然后,您可以筛选:

t = (df.groupby(['id']).month.nunique() == 3)
print(df.loc[df.id.isin(t[t].index)])

    id  month
0  100      1
1  100      2
2  100      3