繁体   English   中英

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

[英]how to delete columns with a certain count condition

我正在尝试删除不包含所有 3 个月的id 例如,我们将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比较后,您可以在 boolean output 上使用groupby + transform('nunique')和切片:

df[df.groupby('id')['month'].transform('nunique').eq(3)]

output:

    id  month
0  100      1
1  100      2
2  100      3

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

我认为你很接近,但你需要稍微修改你的代码。 使用您的代码,但使用nunique交换count ,这将返回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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM