Как я могу считать повторения в определенный день? - PullRequest
0 голосов
/ 22 октября 2018
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, поэтому в 1-й день этот cpf инициирует диалог 01.08.2008 12: 50: 0, а конец беседы был 01.01.2008 15: 50: 0, что мне нужноименно это вычитание о enddate - startdate, но если не принимать во внимание середину таблицы, например, 1234, в 01.08.2008 было три разговора, вычитание о первом часе первого разговора, вычитание последнего часа последнего разговора.Как я могу это сделать?

  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

1 Ответ

0 голосов
/ 22 октября 2018

Использование 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')
...