import pandas as pd
import re
time_1 = pd.read_excel(r'C:\Users\54512\Desktop\拨打时间转换.xlsx')
"def time_to_format(seconds):
day = int(seconds//86400)
hour = int(seconds%86400//3600)
minute = int(seconds%86400%3600//60)
second = int(seconds%86400%3600%60)
strformat = '{0}天{1}时{2}分{3}秒'.format(day, hour, minute, second)
return strformat"
"def format_to_time(strformat):
tmp = re.findall('^(.*?)天(.*?)时(.*?)分(.*?)秒', strformat)[0]
day, hour, minute, second = tmp
seconds = int(day)*86400 + int(hour)*3600 + int(minute)*60 + int(second)
return seconds"
time_1['拨打时间'] = pd.to_datetime(time_1['拨打时间'])
time_2 = time_1.sort_values(by=['业务员', '拨打时间'], ascending=[True, True]).reset_index(drop=1)
tmp = time_2.groupby('业务员')['拨打时间'].diff()
tmp2 = tmp.apply(lambda x: time_to_format(x.total_seconds()) if pd.notnull(x) else None)
tmp_time_秒数 = tmp2.apply(lambda x: format_to_time(x) if pd.notnull(x) else x)
time_2['秒数'] = tmp_time_秒数
time_2.to_excel(r'C:\Users\54512\Desktop\后一通与前一通的相隔时间.xlsx',index=False)
#把时间的格式改成'{0}天{1}时{2}分{3}秒'
#把(.*?)天(.*?)时(.*?)分(.*?)秒改为秒数显示
# 把‘拨打时间’转成时间格式
# 按'业务员','拨打时间'分组排序(业务员升序,拨打时间升序)
# 拨打时间列做下一项与上一项的差值
# 将差值转换成并转成天时分秒格式
#再转换成秒数
#time_2 表格中新增一行【‘秒数’】,内容就是tmp_time_秒数的数据
#导出数据
任务:将业务员当天的拨打时间做一个差值,检查拨打时间的间隔,由此看出业务员工作有没有偷懒。(此部分是程序员同事帮忙写的,我平时使用都会直接当一个模板来使用的。所以匿名函数内的仔细内容我可能也不会。但结果总体是可以输出的。)