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

如何操作Pandas多级索引Series以分析员工班次异常数据?

处理Pandas多级索引Series生成异常班次组合列表及新增列方案

需求背景

通过Pandas统计指定日期的员工类型数量,识别异常值(班次与日期组合的数量≠2),需要从多级索引Series生成对应异常组合的元组列表,并为原DataFrame添加Worked a Double和Over staffed两列。

原始数据与统计代码

import pandas as pd

shifts = [("Cashier", "Thursday"), ("Cashier", "Thursday"),
        ("Cashier", "Thursday"), ("Cook", "Thursday"),
        ("Cashier", "Friday"), ("Cashier", "Friday"),
        ("Cook", "Friday"), ("Cook", "Friday"),
        ("Cashier", "Saturday"), ("Cook", "Saturday"),
        ("Cook", "Saturday")]
labels = ["JOB_TITLE", "DAY"]
df = pd.DataFrame.from_records(shifts, columns=labels)
df1 = df[['JOB_TITLE', 'DAY']].groupby('DAY')
shifts_series = df1['JOB_TITLE'].value_counts()

统计后得到的多级索引Series:

DAY       JOB_TITLE
Friday    Cashier      2
          Cook         2
Saturday  Cook         2
          Cashier      1
Thursday  Cashier      3
          Cook         1
Name: JOB_TITLE, dtype: int64

生成异常组合元组列表

直接对多级索引Series使用布尔索引筛选,再提取索引转为列表即可(多级索引的每个元素本身就是(DAY, JOB_TITLE)格式的元组):

# 提取数量等于1的(日期,岗位)组合列表
count_1_combinations = shifts_series[shifts_series == 1].index.tolist()
# 提取数量大于2的(日期,岗位)组合列表
count_over2_combinations = shifts_series[shifts_series > 2].index.tolist()

执行后得到:

  • 数量等于1的组合:[('Saturday', 'Cashier'), ('Thursday', 'Cook')]
  • 数量大于2的组合:[('Thursday', 'Cashier')]

为原DataFrame新增状态列

推荐使用合并统计结果的方式实现(比apply更高效):

# 将统计Series转为DataFrame,重命名计数列
count_df = shifts_series.reset_index(name='SHIFT_COUNT')
# 合并统计结果到原DataFrame
df = df.merge(count_df, on=['DAY', 'JOB_TITLE'], how='left')
# 根据计数生成状态列
df['Worked a Double'] = df['SHIFT_COUNT'] == 1
df['Over staffed'] = df['SHIFT_COUNT'] > 2
# 可选:删除中间计数列
df.drop('SHIFT_COUNT', axis=1, inplace=True)

最终DataFrame部分结果示例:

JOB_TITLEDAYWorked a DoubleOver staffed
CashierThursdayFalseTrue
CashierThursdayFalseTrue
CashierThursdayFalseTrue
CookThursdayTrueFalse
CashierFridayFalseFalse

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 13:20:28