首页 > 解决方案 > 在有条件的熊猫中查找重复项(Python)

问题描述

我想获取article_id每个的重复数merchant_id,其中zip_code不相同。请看下面的例子:

桌子

merchant_id     article_id   zip_code 
1               4555         1000
1               4555         1003
1               4555         1002
1               3029         1000
2               7539         1005
2               7539         1005
2               7539         1002
2               1232         1006
3               5555         1000
3               5555         1001
3               5555         1002
3               5555         1003

输出表

merchant_id     count_duplicate
1                3
2                2
3                4

到目前为止,我能够返回所有重复的行 - 请参见下面的代码:

df[df.duplicated('product_id',keep=False)==True 

标签: pythonpandas

解决方案


我们可以使用groupbywithnunique然后 filter( query) 仅组> 1nunique代表“唯一值的数量”。

dfn = (
    df.groupby(['merchant_id', 'article_id'])['zip_code'].nunique()
    .reset_index(name='count_duplicate')
    .query('count_duplicate > 1')
)

   merchant_id  article_id  count_duplicate
1            1        4555                3
3            2        7539                2
4            3        5555                4

推荐阅读