根据聚合计数删除行
有这样的数据框
car model
toyota corolla
toyota rav4
honda civic
honda civic
honda accord
我如何编写一个删除次数少于 n 次的品牌,比如我想删除出现次数少于 3 次的品牌,结果数据帧将是
car model
honda civic
honda civic
honda accord
所以我保留相同的数据框和所有变量,只删除行。
回答
In [22]: df.assign(cnt=df.groupby('car').transform(len)).query('cnt >= 3').drop('cnt', axis=1)
Out[22]:
car model
2 honda civic
3 honda civic
4 honda accord
- 你得到每辆车使用的计数
df.groupby('car').transform(len) - 使用
df.assign - 过滤计数 >= 3
- 删除计数列
回答
您可以使用,groupby以filter这样的:
df.groupby('car').filter(lambda x: x['car'].count() >= 3)
输出:
car model
2 honda civic
3 honda civic
4 honda accord
或者使用布尔索引,groupby和transform:
df[df.groupby('car')['car'].transform('count') >= 3]