Pandas where count在计数之后

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

标签: python pandas

我有一个名为df的Pandas DataFrame:

   col_A id name
0      4  1   n1
1     39  2   n1
2     49  3   n2
3      1  4   n2
4      0  5   n2

假设按列名称分组后,对列 id 执行 计数

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

这样我就可以获得 id 每个名称的不同数量。我得到了

name
n1    2
n2    3

我如何对这个我通过计数获得的帧进行排序(显然不是列)?我想通过降序/递增计数来排序,并且可能只检索符合某个 where 子句的计数(比如那些> 2)。

1 个答案:

答案 0 :(得分:3)

返回的类型为Series,您可以使用参数sort调用此ascending=Truesort_values(如果运行0.17.0或更高版本的pandas):

In [51]:
counts = df.groupby(['name'])['id'].count()
counts.sort_values(ascending=True)
counts

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

您可以通过传递布尔条件来过滤系列以生成蒙版:

In [52]:
counts[counts > 2]

Out[52]:
name
n2    3
Name: id, dtype: int64

面具看起来像这样:

In [53]:
counts > 2

Out[53]:
name
n1    False
n2     True
Name: id, dtype: bool