【问题标题】:Python: Doing calculations with elapsed time of an activityPython:使用活动的经过时间进行计算
【发布时间】:2021-02-07 15:57:15
【问题描述】:

我有以下活动经过时间的数据:

Sample Data

有什么方法可以将每个活动的经过时间相加,使得活动 A 的总经过时间为 08:15:00 和 B 02:30:00?非常感谢大家的帮助。

注意:到目前为止,我在 stackoverflow 上没有找到任何解决方案。时间测量的格式由第三方提供,原始数据帧很大,这意味着时间测量的转换,例如通过 for 循环需要很长时间。

【问题讨论】:

  • df.groupby(['Activity'])['Time'].sum()
  • Hy Epsi95,感谢您的评论。问题是“时间”测量,不能相加:TypeError: unsupported operand type(s) for +: 'datetime.time' and 'datetime.time'
  • @LuckLukee 检查答案
  • @LuckyLukee 请以表格格式显示您的示例数据,而不是链接

标签: python dataframe time measurement


【解决方案1】:

您可以使用pd.to_timedelta()groupby

import pandas as pd

d = [['A', '08:00:00'],
    ['B', '02:00:00'],
    ['A', '00:15:00'],
    ['B', '00:30:00']]

df = pd.DataFrame(d, columns=['Activity', 'Time'])

df['Time'] = pd.to_timedelta(df['Time'])
df.groupby(['Activity']).sum()
Activity    Time
A          0 days 08:15:00
B          0 days 02:30:00

如果你不想在决赛中度过几天,那么

import re

df2 = df.groupby(['Activity']).sum()
df2['Time'] = df2['Time'].apply(lambda x: re.findall(r'days (.*)', str(x))[0])
df2
Activity    Time
A          08:15:00
B          02:30:00

【讨论】:

  • 可能应该在您的答案代码中包含 pd 的导入语句。
  • @Epsi95 这正是我想要的。非常感谢!
猜你喜欢
  • 2012-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-05
  • 1970-01-01
  • 2016-04-25
  • 2020-12-01
相关资源
最近更新 更多