使用pandas统计每日每人的工单确认总数量
按日按人员统计确认工单数实现方案
不需要提前枚举所有人员姓名,使用pandas内置的透视/交叉表函数即可自动适配所有出现的确认人,数千行数据运行无压力。
实现步骤
- 首先预处理日期字段:原始
Date_Created字段带时分秒,需要先提取为纯日期维度 - 调用透视/交叉表函数自动按日期、人员维度计数,无工单的组合自动填充0
前置数据读取与预处理代码
import pandas as pd # 读取本地csv文件 df = pd.read_csv("你的工单文件存储路径.csv") # 提取标准日期,输出格式为YYYY-MM-DD df["Dates"] = pd.to_datetime(df["Date_Created"]).dt.strftime("%Y-%m-%d")
统计方法二选一即可
方法1:pivot_table透视表
conf_per_day = pd.pivot_table( df, index="Dates", columns="Confirmed_By", values="Date_Created", aggfunc="count", fill_value=0 ).reset_index() # 清除列名层级,输出平表 conf_per_day.columns.name = None
方法2:crosstab交叉表(写法更简洁)
conf_per_day = pd.crosstab( index=df["Dates"], columns=df["Confirmed_By"], dropna=False ).reset_index() conf_per_day.columns.name = None
输出效果
运行后得到的表和期望结构完全一致:
| Dates | Bob | Tim | Jack | Sally |
|---|---|---|---|---|
| 2022-04-06 | 2 | 1 | 0 | 0 |
| 2022-04-07 | 2 | 0 | 0 | 1 |
| 2022-04-08 | 0 | 0 | 3 | 2 |
如果后续出现新的临时补位人员,代码会自动新增对应人员的统计列,不需要手动修改代码适配,不会出现统计遗漏。
内容的提问来源于stack exchange,提问作者Sphynx
相关产品推荐
相关产品推荐

