Pandas如何判断列中是否存在指定词并将缺失状态纳入统计生成新DataFrame
Pandas 缺失状态计数补全实现方案
核心逻辑
预先定义你需要统计的所有目标状态列表,统计原始数据计数后补全缺失状态的0值即可,以下是两种常用实现方法:
方法1:value_counts + reindex(单次统计首选)
代码实现步骤:
import pandas as pd # 1. 示例原始数据(实际替换为你的数据集即可) df = pd.DataFrame({ 'status': ['In Progress', 'Done', 'Done', 'In Progress', 'Review'] }) # 2. 定义需要统计的所有状态,按你期望的输出顺序排列 full_status = ['Backlog', 'On hold', 'In Progress', 'Review', 'Done'] # 3. 统计+补全缺失状态,缺失值填充为0 status_count = df['status'].value_counts().reindex(full_status, fill_value=0).reset_index() # 4. 重命名列(可选,按需调整) status_count.columns = ['status', 'count']
方法2:Categorical 类型转换(适合多场景状态操作)
如果后续还要基于状态做分组、排序、可视化等操作,推荐先把状态列转为固定分类的Categorical类型,后续所有统计都会自动保留全量状态:
# 沿用上面的df和full_status变量 # 1. 将状态列转为指定全部分类的Categorical类型 df['status'] = pd.Categorical(df['status'], categories=full_status) # 2. 直接统计即可自动包含所有分类,缺失状态计数为0 status_count = df['status'].value_counts().sort_index().reset_index() status_count.columns = ['status', 'count']
两种方法最终输出的统计表格式一致,示例如下:
| 序号 | status | count |
|---|---|---|
| 0 | Backlog | 0 |
| 1 | On hold | 0 |
| 2 | In Progress | 2 |
| 3 | Review | 1 |
| 4 | Done | 2 |
你可以根据自己的使用场景选择合适的方案,全量状态列表可按需自由调整增删
内容的提问来源于stack exchange,提问作者mhordflyer
相关产品推荐
相关产品推荐

