Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Groupby统计集合中唯一值的频率_Python_Python 3.x_Pandas - Fatal编程技术网

Python Groupby统计集合中唯一值的频率

Python Groupby统计集合中唯一值的频率,python,python-3.x,pandas,Python,Python 3.x,Pandas,我有一个像这样的DF User Dept 1 Cook 1 Cook 1 Home 2 Sports 2 Travel 2 Cook 我想统计每个部门内的唯一用户: Dept User Cook 2 Home 1 Sports 1 Travel 1 请注意,部门Co

我有一个像这样的DF

   User      Dept     
    1        Cook
    1        Cook
    1        Home
    2        Sports
    2        Travel
    2        Cook
我想统计每个部门内的唯一用户:

   Dept      User
   Cook      2
   Home      1
   Sports    1
   Travel    1
请注意,部门Cook只有两个用户,因为即使在“Cook”中找到了三个用户,也只有两个唯一的用户

我尝试了以下方法:

 df.groupby(['Dept']).count()  -- counts 'Cook' three times
 df.drop_duplicates(['Dept']).groupby('Dept')['User'].sum() -- over counts all departments 

我知道答案是群比,我就是想不出来

您可以使用
nunique

>>> df.groupby("Dept")["User"].nunique()
Dept
Cook      2
Home      1
Sports    1
Travel    1
Name: User, dtype: int64
>>> df.groupby("Dept")["User"].nunique().reset_index()
     Dept  User
0    Cook     2
1    Home     1
2  Sports     1
3  Travel     1

(请注意,我使用了您的示例数据,它在运动中只有一个唯一的用户。)

您真的很接近
df.drop_duplicates().groupby('Dept').count()
我想这可能是你想要的。嗨,达格哈,这个方法仍然在计算“库克”三次而不是两次。我需要每个部门的唯一用户数。用
.size()
代替
.count()
怎么样?这两种方法似乎对我都有效(py2.7,pandas 0.16.2)啊,是的,这很有效——忘记使用nunique了!用python给猫剥皮有很多不同的方法。非常感谢!