[Python] 纯文本查看 复制代码 import pandas as pd
def get_one():
# 读取数据
pdf_c = pd.read_excel(r".\a2c.xlsx", usecols=['用户', '时长'], dtype={'时长': str})
pdf_e = pd.read_excel(r".\a2e.xlsx", usecols=['用户', '时长'], dtype={'时长': str})
pd.set_option('display.max_rows', None)
# pdf_C['时长'] = pd.to_datetime(pdf_C['时长'],unit='d',origin=dt.datetime(1899,12,30))for i in pdf_c['时长']:
# for i in pdf_c['时长']:
# print(type(i))
pdf_l = pd.concat([pdf_c, pdf_e])
return pdf_l
def get_two():
pdfT = pd.read_excel(".\MemberList_admin12m.xlsx", usecols=['部门名称', '用户'])
return pdfT
def compound():
pd1 = get_one()
pd2 = get_two()
tab = pd2.merge(pd1, how='left', on='用户')
# print(type(tab))
# 将时间数据转换成 timedelta 类型
tab['时长'] = pd.to_timedelta(tab['时长'])
# 计算时长总和
result = tab.groupby(['部门名称', '用户'])['时长'].sum().reset_index()
# 将时间数据格式化为 HH:MM:SS 格式
result['时长'] = result['时长'].apply(lambda x: str(int(x.total_seconds() // 3600)).zfill(2) + ':' +
str(int((x.total_seconds() % 3600) // 60)).zfill(2) + ':' +
str(int(x.total_seconds() % 60)).zfill(2))
print(result)
result.to_excel('result.xlsx', index=False)
if __name__ == '__main__':
compound()
输出结果
部门名称 用户 时长
部门1 张三 27:12:00
部门2 李四 06:04:00
部门3 王五 01:01:01
excel表格期中一个为下边这种格式
用户 时长
张三 5:06:00
李四 3:02:00
王五 1:01:01
部门数据为这种
部门名称 用户
部门1 张三
部门2 李四
部门3 王五
最近没上论坛,不知道你还用不用的上,这个是用户求和,你可以参考着改一下
建议下次直接给源码和元始数据模板,然后再列个想得到什么样的数据,这样问题会少一些
|