Python:检查每个用户的唯一类别

时间:2019-11-20 01:48:08

标签: python pandas

我有一个用户表,其中包含他们的项目和其他信息

我需要选择只有一个项目类型的唯一用户,否则从数据框中删除。 表格示例:

|customer |items   |levels   |
| -------| ------- | ------- |
|  a    |  x     | 0    |
|  a    |  x     | 1    |
|  a    |  y     | 0    |
|  a    |  y     | 0    |
|  b    |  t     | 0    |
|  b    |  t     | 1    |
|  b    |  t     | 1    |
|  b    |  t     | 3    |

因此删除客户“ a”

我可以这样检查:

df.groupby('customer').agg({'items':'nunique'})

并加入了两个表,但是我不确定效率如何。

我们是否有更有效的方法来删除该值(我们也有多个记录,所以我不确定如何使用drop_duplicate

2 个答案:

答案 0 :(得分:2)

您可以进行transform

con=df.groupby('customer')['item'].transform('nunique')==1
df1=df[con].copy()

要修复您的输出

s=df.groupby('customer').agg({'items':'nunique'})
df1=df.loc[df.customer.isin(s[s==1].index)].copy()

答案 1 :(得分:1)

我们也可以使用GroupBy.filter

new_df=df.groupby('customer').filter(lambda x: x['items'].nunique()==1)
print(new_df)

  customer items  levels
4        b     t       0
5        b     t       1
6        b     t       1
7        b     t       3