python 求时间间隔

Python010

python 求时间间隔,第1张

大概逻辑说下吧:

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