我有一个名为 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
假设在按 name 列分组后对 id 列进行count:
df.groupby('name')['id'].count()
这样我就可以得到每个 name 的 id 的不同计数。我明白了
name
n1 2
n2 3
然后我将如何根据计数(显然不是列)对我获得的这个帧进行排序?我想通过降序/升序对 if 进行排序,并且可能只检索满足特定 where 子句(比如那些 > 2)的计数。
最佳答案
返回的类型是一个 Series
,您可以调用 sort
或 sort_values
(如果运行 0.17.0 或更高版本的 pandas)在此使用参数 ascending=True
:
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
您可以通过传递 bool 条件来生成掩码来过滤系列:
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
关于python - 计数后的 Pandas where 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35011442/