pandas 筛选某列值出现至少 N 次的行
假设有一个 dataframe 如下:
user_name | publish_time | content |
---|---|---|
小明 | 2022-12-30 15:10:00 | 今天是 2022 年最后一天,我在广东 |
小刚 | 2022-01-01 12:23:33 | 今天是 2022 年第一天,我在加勒比 |
小王 | 2022-01-01 12:33:00 | 今天是 2022 年第一天,我在小刚身边 |
小刚 | 2023-01-01 02:15:45 | 今天是 2023 年第一天,我在百慕大 |
小明 | 2023-01-01 00:05:20 | 今天是 2023 年第一天,我还在广东 |
现在我们要统计 user_name 中出现两次及以上的行。肉眼可以看出就是小明、小刚各自两行共四行。
最开始我的思路是使用 drop_duplicated 按照 user_name 为 key 去重,将去重后的 dataframe 和原来的 dataframe 按照所有列为 key 合并后再去重,这样一来就只剩下 user_name 出现两次及以上的行了,但是这种思路扩展性不好,假如是出现 3 次及以上呢?计算量就更大了。
改进后的思路是:主要使用 pandas 的 value_counts 函数统计次数,isin 函数实现筛选,其代码如下:
1 | # -*- coding: utf-8 -*- |
如有更优雅的方式(肯定有),请批评指正~
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 BuyiXiao's Blog!
评论
ValineDisqus