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

如何从Series或列表中提取指定值以统计员工缺勤次数

解决方案

status.loc['A']触发KeyError是因为对应员工当月无缺勤记录,value_counts()返回的Series中不存在'A'索引,自然无法通过索引直接取值。

从absent列表提取'A'计数的方法

根据你存储absent列表的不同结构,对应方案如下:

  • 若absent列表存储的是(状态值, 计数)的元组对:
    直接遍历匹配即可,无匹配时默认返回0即可:
    absent_count = 0
    for state, cnt in absent:
        if state == 'A':
            absent_count = cnt
            break
    
    简化写法:
    absent_count = next((cnt for state, cnt in absent if state == 'A'), 0)
    
  • 若absent列表仅存储了value_counts()的数值结果,未附带状态标签:
    你需要补充存储状态索引的映射关系才能精准提取,否则纯数值列表无法对应到状态:
    # 存储环节补充保存状态顺序
    state_index = status.value_counts().index.tolist()
    absent = status.value_counts().tolist()
    
    # 提取环节
    absent_count = absent[state_index.index('A')] if 'A' in state_index else 0
    

更简单的替代方案(不需要依赖absent列表)

其实不用单独处理absent列表,直接调用value_counts()的get方法即可完全规避KeyError,代码更简洁:

# 存在'A'返回对应计数,不存在返回0
absent_count = status.value_counts().get('A', 0)

性能优化建议

600余员工的数据量不大,但逐行循环的写法可以替换为pandas分组聚合,效率更高、逻辑更清晰:

# 假设原始表为df,包含员工ID列、考勤状态列status
absent_stats = df.groupby('员工ID')['status'].apply(
    lambda x: x.value_counts().get('A', 0)
).reset_index(name='缺勤次数')
# 直接写入新Excel工作表
absent_stats.to_excel('缺勤统计结果.xlsx', sheet_name='月度缺勤', index=False)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 15:15:03