我有以下数据框:

cpf  day  startdate              enddate
1234  1   08/01/2018 12:50:0     08/01/2018 15:50:0
1234  1   08/01/2018 14:30:0     08/01/2018 15:50: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,我需要的是确切地说,这个关于结束日期的减法-开始日期。我怎样才能做到这一点?

  cpf  day  startdate              enddate              Time_Conversation
    1234  1   08/01/2018 12:50:0     08/01/2018 15:50:0         3:00:0
    1234  1   08/01/2018 14:30:0     08/01/2018 15:50: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

最佳答案

取决于几件事,但是假设startdateenddatepandas.Timestamp列,则可以简单地执行以下操作:

df["Time_Conversation"] = (df["enddate"] - df["startdate"]).astype("timedelta64[s]")


这将为您提供对话进行的总秒数。然后根据需要将其格式化为hh:mm:ss。

如果startdateenddate为字符串类型的列,则需要另外转换为正确的格式。

import pandas as pd
df["startdate"] = pd.to_datetime(df["startdate"], infer_datetime_format=True)
df["enddate"] = pd.to_datetime(df["enddate"] ,infer_datetime_format=True)

df["Time_Conversation"] = (df["enddate"] - df["startdate"]).astype("timedelta64[s]")

关于python - 如何计算确定天的cpf重复次数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52704126/

10-11 20:44