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

如何将员工月度休假数据转换为按月份列展示的Pandas DataFrame

如何用Pandas将员工月度休假记录转换为宽格式DataFrame

针对你需要合并员工月度休假记录、将月份转为列的需求,可以通过Pandas的透视表功能快速实现,以下是具体步骤和代码:

步骤说明

  1. 读取并预处理数据:读取CSV文件后,先整理列名(原始列名含空格,处理成更易操作的格式),再将Month Year列转换为月份英文缩写,匹配你期望的列名格式。
  2. 生成宽格式DataFrame:用pivot_table将数据从长格式转成宽格式,以员工编码为索引,月份为列,休假天数为值。
  3. 调整格式:给列名加上leavedays-前缀,将缺失的休假记录替换为nil,最后整理索引和列名。

完整代码示例

import pandas as pd

# 读取CSV数据(假设文件名为employee_leaves.csv)
df = pd.read_csv("employee_leaves.csv")

# 处理列名,去除空格并统一小写
df.columns = df.columns.str.strip().str.replace(" ", "_").str.lower()

# 将month_year列转换为月份英文缩写(如2-2022转为Feb)
df['month_abbr'] = pd.to_datetime(df['month_year'], format='%m-%Y').dt.strftime('%b').str.capitalize()

# 生成透视表,转换为宽格式
pivot_df = df.pivot_table(
    index='emp._code',
    columns='month_abbr',
    values='leave_days',
    aggfunc='first'  # 每个员工每月只有一条记录,用first即可
)

# 重命名列,加上leavedays-前缀
pivot_df.columns = [f'leavedays-{col}' for col in pivot_df.columns]

# 将缺失值替换为nil,重置索引并修改列名
result_df = pivot_df.reset_index().rename(columns={'emp._code': 'empcode'}).fillna('nil')

print(result_df)

输出效果

运行代码后,会得到符合你需求的DataFrame:

empcode  leavedays-Feb  leavedays-Mar  leavedays-Apr  leavedays-May  leavedays-Jun
0        1             10             20              3              2            nil
1        2              2             15           nil           nil              4

如果你的原始数据中员工每月可能有多条休假记录,可以把aggfunc改成sum来合并当月总天数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 21:25:18