如何使用pandas.pivot_table统计status字段的数值计数?
用pandas.pivot_table统计status字段的数值计数
别担心,这事儿用pivot_table很容易搞定,我给你举个具体的例子一步步来:
首先,咱们先模拟一份常见的样本数据(和你可能用到的结构类似):
import pandas as pd # 构造样本DataFrame df = pd.DataFrame({ 'user_id': [101, 102, 103, 104, 105, 106, 107], 'status': ['success', 'failed', 'success', 'success', 'failed', 'pending', 'success'], 'operation': ['login', 'payment', 'login', 'signup', 'payment', 'login', 'signup'] })
接下来就是核心的pivot_table用法,关键抓三个参数:
index='status':指定按status字段分组values:选任意一个不会有缺失值的字段就行(比如这里的user_id),因为计数只需要统计行数aggfunc='count':指定聚合方式为计数
代码如下:
# 生成status计数的透视表 status_count_table = pd.pivot_table( df, index='status', values='user_id', aggfunc='count' ) # 把列名改成更直观的'count' status_count_table.rename(columns={'user_id': 'count'}, inplace=True)
运行后你会得到预期的结果:
count status failed 2 pending 1 success 4
额外补充两个小技巧:
- 如果你的数据里status可能有缺失值,
count会自动忽略这些行,如果你想把缺失值也统计进去,可以先给status填充默认值(比如df['status'].fillna('unknown', inplace=True)) - 除了
'count',你也可以用aggfunc=len,效果完全一样,比如:status_count_table = pd.pivot_table(df, index='status', values='user_id', aggfunc=len)
这样就能完美实现你要的status字段数值计数统计啦!
内容的提问来源于stack exchange,提问作者gomathi subramanian
相关产品推荐
相关产品推荐

