我有一个名为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)。
答案 0 :(得分:3)
返回的类型为Series
,您可以使用参数sort
调用此ascending=True
或sort_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