gpt4 book ai didi

python - Pandas - 按 id 分组并使用阈值删除重复项

转载 作者:太空狗 更新时间:2023-10-30 00:23:59 27 4
gpt4 key购买 nike

我有以下数据:

userid itemid
1 1
1 1
1 3
1 4
2 1
2 2
2 3

我想删除查看相同 itemID 两次以上的用户 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] })

最佳答案

您可以使用 duplicated确定行级重复项,然后对 'userid' 执行 groupby 以确定 'userid' 级重复项,然后相应地删除。

无阈值下降:

df = df[~df.duplicated(['userid', 'itemid']).groupby(df['userid']).transform('any')]

要降低阈值,请在 duplicated 中使用 keep=False,并对 bool 列求和并与您的阈值进行比较。例如,阈值为 3:

df = df[~df.duplicated(['userid', 'itemid'], keep=False).groupby(df['userid']).transform('sum').ge(3)]

无阈值的结果输出:

   userid  itemid
4 2 1
5 2 2
6 2 3

关于python - Pandas - 按 id 分组并使用阈值删除重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43713731/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com