我有以下数据:
userid itemid
1 1
1 1
1 3
1 4
2 1
2 2
2 3
我想删除查看同一项ID超过或等于两次的用户ID。 例如,userid=1查看了itemid=1两次,因此我想删除userid=1的整个记录。但是,由于userid=2没有查看同一个项目两次,我将保持userid=2不变。
所以我希望我的数据如下:
userid itemid
2 1
2 2
2 3
有人能帮我吗?
import pandas as pd
df = pd.DataFrame({'userid':[1,1,1,1, 2,2,2],
'itemid':[1,1,3,4, 1,2,3] })
可以使用^{} 确定行级重复项,然后对“userid”执行
groupby
以确定“userid”级重复项,然后相应地删除。无阈值下降:
要降低阈值,请在
duplicated
中使用keep=False
,并对布尔列求和,然后与阈值进行比较。例如,阈值为3时:无阈值的结果输出:
按用户和项对数据帧进行分组:
找出只有一次看到任何物品的人:
合并结果并保留“好”行:
^{}
是为这个做的。可以传递一个返回布尔值的函数,该布尔值确定组是否通过了筛选器。
filter
和value_counts
最普遍和直观的
filter
和is_unique
查找
n < 2
时的特殊情况相关问题 更多 >
编程相关推荐