Pandas如何按person_id分组展示考勤数据的透视结果?
解决考勤数据透视后Excel导出可读性问题
你的问题出在透视后列层级的顺序上,默认生成的DataFrame列层级是[c_in/c_out, person_id],导致Excel里同一人的考勤项分散在不同分组下。调整列层级并优化导出设置即可解决:
步骤1:调整列层级顺序并排序
对透视后的DataFrame交换列层级,将person_id设为一级列标题,c_in/c_out作为二级标题,再按person_id排序列:
# 交换列的层级,把person_id移到第一层 df_att_pivoted = df_att_pivoted.swaplevel(axis=1) # 按person_id排序,确保同一人的c_in和c_out相邻 df_att_pivoted = df_att_pivoted.sort_index(axis=1)
调整后的DataFrame列结构示例:
person_id 3 4 c_in c_out c_in c_out date 2023-07-01 2023-07-01 07:10:10 2023-07-01 17:20:10 2023-07-01 07:02:10 2023-07-01 17:50:10 2023-07-02 2023-07-02 07:07:10 2023-07-02 17:09:10 2023-07-02 07:08:10 2023-07-02 17:17:10
步骤2:优化Excel导出
导出时启用merge_cells=True,让同一person_id的一级列标题自动合并,进一步提升可读性:
df_att_pivoted.to_excel('考勤报表.xlsx', merge_cells=True)
这样导出的Excel中,每个人员的考勤数据会被清晰分组,视觉上一目了然。
内容的提问来源于stack exchange,提问作者farell ambiar
相关产品推荐
相关产品推荐

