使用Python读取特殊Excel休假日历并转换为指定格式DataFrame
特殊结构休假Excel转人员-日期DataFrame实现方案
前置依赖安装
执行以下命令安装需要的工具库:pip install pandas openpyxl
实现代码
你只需要修改代码开头的几个配置参数,适配你自己的Excel文件即可直接运行:
import pandas as pd # -------------------------- 请修改以下参数适配你的文件 -------------------------- excel_path = "你的休假日历文件路径.xlsx" # 替换为你的Excel文件实际路径 header_row = 1 # 日期表头所在的Excel行号,注意Excel第一行索引为0,比如日期在第2行就填1 person_start_row = 2 # 第一个人员信息所在的Excel行号,比如人员从第3行开始就填2 name_col = 0 # 人员姓名所在的列号,Excel第一列索引为0,比如姓名在A列就填0 # ----------------------------------------------------------------------------- # 读取Excel文件,保留空值 df_raw = pd.read_excel(excel_path, header=None, keep_default_na=False) # 提取日期表头,处理合并单元格导致的空值 date_header = df_raw.iloc[header_row].ffill().tolist() # 把第一列的表头修改为“人员姓名” date_header[name_col] = "人员姓名" # 提取人员+休假数据 df_person = df_raw.iloc[person_start_row:] df_person.columns = date_header # 设置人员姓名为行索引 df_result = df_person.set_index("人员姓名") # 输出前几行结果验证 print(df_result.head()) # 可导出为新Excel文件方便查看 df_result.to_excel("转换后的休假日历.xlsx")
常见场景适配调整
- 如果你需要把休假标记转为1/0的数值格式,可在代码最后增加以下内容,括号内替换为你Excel里实际的休假类型标记:
df_result = df_result.replace({'年假':1, '病假':1, '事假':1, '调休':1, '':0}) - 如果你的Excel包含多个工作表,可在
pd.read_excel方法中增加sheet_name参数,指定为对应工作表的名称或者序号(从0开始计数) - 如果日期表头需要拼接年月信息,可提取上一行的月份数据和日期组合后再作为列名
内容的提问来源于stack exchange,提问作者ImFabien75
相关产品推荐
相关产品推荐

