python办公自动化(9)利用pandas的行列转换处理排班表

python办公自动化(9)利用pandas的行列转换处理排班表

公司有个部门上班时间和其他部门不同,每月需要制作排班表导入OA系统,数据是这样的:
python办公自动化(9)利用pandas的行列转换处理排班表_第1张图片
如果要导入到OA系统数据必须要转换成这样:
python办公自动化(9)利用pandas的行列转换处理排班表_第2张图片

1.pandas行转列

#!/usr/bin/python
# -*- coding: gbk -*-
import  pandas  as pd
df=pd.read_csv('202005排班.csv',encoding="gbk",index_col=['姓名'])
#删除空列
df.dropna(axis=1,how='any',inplace=True)
#删除不用的列
df.drop(labels=['夜班天数'],axis=1,inplace=True)
result=df.stack().reset_index()
result.columns=['姓名','日期','班制']
result.to_csv('202005排班数据详细数据.csv',index=False,encoding='gbk')

2.pandas列转行

某一天领导说要看最近几个月的排班,要方便查看,汉,又要从系统导出来做成原来的的表格,还好有潘大师,呵呵

#!/usr/bin/python
# -*- coding: gbk -*-
import  pandas as pd

df=pd.read_csv('202005排班数据详细数据.csv',encoding='gbk',dtype = {'日期' : str})
result=df.pivot_table(index =['姓名'],columns=['日期'],values='班制',aggfunc='first').reset_index()
result.to_csv('202005排班汇总数据.csv',index=False,encoding='gbk')



注意:index是一维分组列 columns是二维分组列,values是分组列以外要选择得值,aggfunc是处理得分组函数默认是mean,我们这里不需要处理,所以写个字符串first

result=df.pivot_table(index =['姓名'],columns=['日期'],values='班制',aggfunc='first').reset_index()

你可能感兴趣的:(python办公自动)