[英]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 的True
或False
,具体取决于它们是否有所有月份。 然后,您可以过滤:
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.