1.把文件处理成CSV格式,也就是每行不同字段都用逗号分隔,然后my_list = line.split(',)
2.建立一个字典a,用于存储人员打电话的开始时间和结束时间,这个要去除连续记录,内容格式为 {name:[start_time,end_time]},然后针对文件处理
3、my_list[0]不等于下一行的值,则把上一行的my_list[0]作为key,结束时间填在字典的end_time里,把下一行的mylist[0]作为key,开始时间填在字典的start-time,然后循环下来,实现去重
4、时间间隔=mylist[0]:mylist[0][1]-mylist[0][0]就是这个人开始通话距离上一个人通话结束的时间间隔
import pandas as pd
方法一:
先利用to_datetime转换为时间格式,tm列的数据形式为'yyyy-MM-dd HH:mm:ss'
df['tm_1'] = pd.to_datetime(df['tm_1'])
df['tm_2'] = pd.to_datetime(df['tm_2'])
利用".dt.seconds"转换为秒,除以相对于的间隔数得到分钟、小时等
df['diff_time'] = (df['tm_1'] - df['tm_2']).dt.seconds/3600
利用round函数可进行四舍五入
df['diff_time'] = round(df['diff_time'])
方法二,日期相减变为小时;变为天的话将h替换为D即可:
df['diff_time'] = (df['tm_1'] - df['tm_2']).values/np.timedelta64(1, 'h')
>>>import datetime>>>starttime = datetime.datetime.now()
#long running
>>>endtime = datetime.datetime.now()
>>>print (endtime - starttime).seconds
====================================================
>>>import datetime
>>>d1 = datetime.datetime(2005, 2, 16)
>>>d2 = datetime.datetime(2004, 12, 31)
>>>(d1 - d2).days
47