python - Python:用活动的经过时间进行计算
问题描述
我有以下活动经过时间的数据:
有没有办法将每个活动的经过时间相加,使得活动 A 的总经过时间为 08:15:00 和 B 02:30:00?非常感谢大家的帮助。
注意:到目前为止,我在 stackoverflow 上没有找到任何解决方案。时间测量的格式由第三方提供,原始数据帧很大,这意味着时间测量的转换(例如通过 for 循环)需要很长时间。
解决方案
您可以使用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
推荐阅读
- javascript - 如何使用 ActiveXobject 在其他浏览器中支持使用 JavaScript?
- python - pandas.DataFrame.boxplot 中的这些点是什么?
- php - 如何在 post api 中传递原始正文参数
- responsive - In bootstrap-vue make responsive listing of items
- react-native - React-Native/Expo Location 状态,如果用户在授予应用权限后不想允许位置
- python - (builtins.TypeError) SQLite 日期类型只接受 Python 日期对象作为输入
- sql-server - 查询以避免两个表中的重复值
- react-native - 如何使用@sentry/react-native 在我的模拟器中打开用户反馈窗口
- python - 在单个浏览器中打开多个 chrome 浏览器和多个选项卡是否相同?
- sql-server - 在代理作业中运行 ssis 包,而两者都在不同的机器上