【问题标题】:Calculate Average Time Difference in Groups Pandas Python计算组中的平均时差 Pandas Python
【发布时间】:2019-09-27 22:24:46
【问题描述】:

我正在尝试计算某些组的操作之间经过的平均时间。数据框如下所示:

Name, Action_ID, Start_Time, End_Time
A, 11, 2019-05-01 09:10:00, 2019-05-01 09:20:00
A, 12, 2019-05-01 09:30:00, 2019-05-01 09:40:00
A, 13, 2019-05-01 09:50:00, 2019-05-01 10:00:00
B, 11, 2019-05-01 09:20:00, 2019-05-01 09:40:00
B, 12, 2019-05-01 09:45:00, 2019-05-01 09:55:00

我想按名称分组并获取上一个操作的开始时间和结束时间之间经过的平均时间。所以基本上得到这样的东西:

Name, Avg_Time_Elapsed
A, 10
B, 5

我使用以下代码创建了一个名为 delta 的新列:

df['delta'] = df['Start_Time'] - df['End_Time'].shift(-1)

但它给了我一个奇怪的结果,因为它显示的差异是 -1 天而不是分钟/秒。在 python 中编写此代码的任何优雅方式?谢谢

【问题讨论】:

    标签: python pandas datetime time pandas-groupby


    【解决方案1】:

    IIUC,你需要groupby这里

    df[['Start_Time','End_Time']]=df[['Start_Time','End_Time']].apply(pd.to_datetime,1)
    
    df.groupby('Name').apply(lambda x : (x['Start_Time']-x['End_Time'].shift()).dt.total_seconds().mean()/60)
    Out[469]: 
    Name
    A    10.0
    B     5.0
    dtype: float64
    

    【讨论】:

    • 我以某种方式得到了 NaN。我想我需要先获得差异然后再做 groupby 对吧?
    • @ajax2000 我没有得到 NaN,我正在使用您的示例数据,请检查您的数据是否与示例数据相同..
    猜你喜欢
    • 1970-01-01
    • 2019-04-19
    • 2023-01-19
    • 1970-01-01
    • 2015-07-03
    • 2021-06-17
    • 1970-01-01
    • 2019-10-20
    • 1970-01-01
    相关资源
    最近更新 更多