如何解决如何在 Python 中按锻炼类型求和时间持续时间和分组?
这是我的表的摘录:
类型 | 持续时间 |
---|---|
步行 | 1:33:42 |
运行 | 0:16:06 |
运行 | 0:30:24 |
步行 | 0:50:35 |
运行 | 1:10:06 |
我要计算的是按类型划分的每次锻炼的持续时间。 我设法使用 datetime.timedelta 计算总时间:
import datetime
timeList = df.Duration
mysum = datetime.timedelta()
for i in timeList:
(h,m,s) = i.split(':')
d = datetime.timedelta(hours=int(h),minutes=int(m),seconds=int(s))
mysum += d
print(str(mysum))
但我不确定如何按组使用它。我能想到的是:
dfft = df.groupby(["Type"]).Duration.sum().reset_index()
但它返回:
类型 | 持续时间 |
---|---|
室内步行 | 0:46:240:10:060:29:32 |
户外跑步 | 0:29:140:28:280:10:580:27:420:11:330:16:060:15... |
户外徒步 | 1:33:420:08:230:04:100:06:530:08:580:35:280:11... |
解决方法
一种方法是创建一个新列,该列表示秒数(作为整数列),然后轻松地在 groupby 中对该列求和 ....
import pandas as pd
data = {'Type': ['W','R','R'],'Duration' : ['1:33:42','0:16:06','0:30:24']}
xxx = pd.DataFrame(data = data)
sec = []
for d in xxx['Duration']:
[h,m,s] = d.split(':')
sec.append(int(h)*3600 + int(m)*60 + int(s))
xxx['seconds'] = pd.Series(sec)
gb_type = xxx.groupby('Type')['seconds'].sum().reset_index()
print(gb_type)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。