You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Pandas中统计维修类型时排除空值并生成空字典?

解决方案

核心思路

先判断每个分组是否包含空字符串的repair_type:

  • 若包含:该分组直接返回空字典
  • 若不包含:统计分组内各维修类型的出现次数,返回统计字典

代码实现

1. 构造测试数据

import pandas as pd

# 模拟用户的初始DataFrame(已将None转为空字符串)
data = {
    'id': [1, 1, 2, 2, 3],
    'sub_id': [101, 102, 201, 202, 301],
    'repair_type': ['更换零件', '', '维修电路', '更换零件', '']
}
df = pd.DataFrame(data)

2. 定义分组处理函数

实现需求逻辑的自定义处理函数:

def process_repair_group(group):
    # 检查分组中是否存在空字符串的repair_type
    if (group['repair_type'] == '').any():
        return {}
    # 统计非空维修类型的出现次数并转为字典
    return group['repair_type'].value_counts().to_dict()

3. 执行分组统计

调用groupby结合自定义函数得到最终结果:

# 按id分组(可根据实际需求替换为sub_id或['id', 'sub_id']组合键)
final_result = df.groupby('id').apply(process_repair_group).to_dict()

4. 验证结果

运行后final_result的输出为:

{
    1: {},
    2: {'更换零件': 1, '维修电路': 1},
    3: {}
}

完全符合需求:含空字符串的分组返回空字典,无空字符串的分组返回有效统计结果。

扩展说明

  • 如果需要按id+sub_id组合维度分组,只需修改groupby的参数为['id', 'sub_id']即可
  • 若后续需求变更为「保留分组但仅排除空字符串的计数」,可先过滤空值再统计,但当前场景下直接返回空字典的逻辑更贴合用户要求

内容的提问来源于stack exchange,提问作者stat_man

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 05:19:54