执行一项活动所需的平均时间

时间:2018-10-26 17:53:00

标签: python pandas datetime

我有一列名为“执行活动所需的时间”(例如:上楼梯)。如果是第一次花了我0:30秒,第二次花了我10:10分钟,我想返回平均50秒的结果。 TimeElapsed是日期时间列

输入:

df = pd.DataFrame([[1, '0:30'], [1, '1:10'], [2, '0:30']], columns=['Person Id', 'TimeElapsed'])

输出:

df2 = pd.DataFrame([[1, '0:50'], [2, '0:30']], columns=['Person Id', 'Average TimeElapsed'])     

我尝试使用

df2['AverageTimeElapsed'] = df[TimeElapsed'].dt.total_seconds()

但这不起作用,因为它不是timedelta函数。

1 个答案:

答案 0 :(得分:3)

这会将您的列转换为时间增量:

df["TimeElapsed"] = pd.to_timedelta("00:"+df["TimeElapsed"])

,然后您可以执行total_seconds()。特别是,如果您要寻找平均值,则可以简单地从以下位置获得它:

df["TimeElapsed"].mean()

更新

在下面的评论中,这是将MM:SS时间转换为秒的通用方法,只要MM和SS为正整数:

df["TimeElapsed"] = df["TimeElapsed"].apply(
    lambda T: datetime.timedelta(seconds=
         sum([x*y for x,y in zip([int(t) for t in T.split(":")], [60,1])])
    )
)

但是,这有点难以理解。但我相信您可以在进一步处理之前将字符串转换为数字/时间增量。