Pandas中的多个分组和计数

时间:2016-01-26 09:10:06

标签: python sql pandas

假设我有这个表,我将其加载到Pandas DataFrame中:

name id ...
n1   1
n1   2
n2   3
n2   4
n2   5
...

现在,我想检索每个唯一名称的ID数。

在SQL中,我做(如果错误,请纠正我)

SELECT name, id, COUNT(*)
FROM table
GROUP BY name, id;

我如何与熊猫达到同样的目标? 这样:

df.groupby(['name', 'id'])['name', 'id'].count()

给了我单独的姓名和ID。

1 个答案:

答案 0 :(得分:1)

您希望groupby在' name'然后在' id'上拨打count这将返回值的计数:

In [38]:
df.groupby('name')['id'].count()

Out[38]:
name
n1    2
n2    3
Name: id, dtype: int64

您有效的做法是对“姓名”和“...”进行分组。并且' id'所以唯一值是两列的组合,你要求每个名称的id计数不是一回事

In [41]:
df.groupby(['name','id'])['name','id'].count()

Out[41]:
         name  id
name id          
n1   1      1   1
     2      1   1
n2   3      1   1
     4      1   1
     5      1   1