python - 计数 if (COUNTIF) 并添加到 Python 中的数据框
问题描述
我有一个有很多重复的数据框。我找到了很多解决方案来查找重复的数量,但不是我想要的方式。如果新列的重复项少于或等于 2 个,有没有办法计算重复项?
数据框如下所示:
NAME
0 Peter
1 Peter
2 Peter
3 Jack
4 Jack
5 Luke
但我希望它看起来像这样:
NAME Count
0 Peter 0
1 Peter 0
2 Peter 0
3 Jack 1
4 Jack 1
5 Luke 1
然后过滤它(删除行),这样我只有一个数据框Count
is 1
。
NAME Count
0 Jack 1
1 Jack 1
2 Luke 1
如果有更简单的方法来删除重复项,那么我很高兴听到它。
解决方案
使用GroupBy.transform
withsize
计数到新列,然后过滤boolean indexing
:
df['count'] = df.groupby('NAME')['NAME'].transform('size')
df = df[df['count'] <= 2]
print (df)
NAME count
3 Jack 2
4 Jack 2
5 Luke 1
如果需要指示列将布尔值转换为整数以True,False
进行1,0
映射:
df['count'] = (df.groupby('NAME')['NAME'].transform('size') <= 2).astype(int)
df = df[df['count'] != 0]
print (df)
NAME count
3 Jack 1
4 Jack 1
5 Luke 1
map
与和的替代解决方案value_counts
:
df['count'] = (df['NAME'].map(df['NAME'].value_counts()) <= 2).astype(int)
df = df[df['count'] != 0]
推荐阅读
- angularjs - 使用 ng-repeat 比较两个对象以设置活动类
- javascript - 零宽度空间使 HTML 链接不可点击
- angular - 如何在 ngx-leaflet 上更改坐标运行时?
- javascript - RangeError:偏移量超出了 DataView 的范围,将二进制文件拆分为块
- database - 使用 Jest/Enzyme 测试 Axios Post Insert/Update
- python - 如何使用 Scrapy 抓取新链接
- python - 为什么“python”和“py”指向不同的用户站点
- github - 怎么可能有一个带有克隆器而没有访问者的存储库?
- vba - 使用数组计算文本中的单词和短语匹配
- python - 我明白了,但铁标签不会更新