cpf day startdate enddate
1234 1 08/01/2018 12:50:0 08/01/2018 15:30:0
1234 1 08/01/2018 14:30:0 08/01/2018 15:40:0
1234 1 08/01/2018 14:50:0 08/01/2018 15:50:0
1234 2 08/02/2018 20:20:0 08/02/2018 23:50:0
1234 2 08/02/2018 22:50:0 08/02/2018 23:50:0
1235 1 08/01/2018 11:50:0 08/01/2018 15:20:0
5212 1 08/01/2018 14:50:0 08/01/2018 15:20:0
我需要计算一天中cpf列的会话时间。例如,第一个cpf是1234,所以在第一天这个cpf在08/01/2018 12:50:0发起了一次对话,对话的结束是08/01/2018 15:50:0,我需要的是确切地讲,此减法涉及结束日期-开始日期,但在表中居然像1234那样,在08/01/2018中有3个会话,该减法约为第一个会话的第一个小时减去最后一个会话的最后一个小时。我该怎么办?
cpf day startdate enddate Time_Conversation
1234 1 08/01/2018 12:50:0 08/01/2018 15:30:0 3:00:0
1234 1 08/01/2018 14:30:0 08/01/2018 15:40:0 3:00:0
1234 1 08/01/2018 14:50:0 08/01/2018 15:50:0 3:00:0
1234 2 08/02/2018 20:20:0 08/02/2018 23:50:0 3:30:0
1234 2 08/02/2018 22:50:0 08/02/2018 23:50:0 3:30:0
1235 1 08/01/2018 11:50:0 08/01/2018 15:20:0 4:30:0
5212 1 08/01/2018 14:50:0 08/01/2018 15:20:0 4:30:0
答案 0 :(得分:1)
使用groupby
+ transform
#df[['startdate','enddate']]=df[['startdate','enddate']].apply(pd.to_datetime)
g=df.groupby(['cpf' ,'day'])
df['DIFF']=g.enddate.transform('last')-g.startdate.transform('first')