我有看起来像这样的数据:
user in out location flag Time
0 ron 12/21/2021 10:11 12/21/2016 17:50 home 0 4:19:03
1 ron 12/21/2016 13:26 12/21/2016 13:52 office 2 0:25:28
2 april 12/21/2016 8:12 12/21/2016 17:27 office 0 8:15:03
3 april 12/21/2016 18:54 12/21/2016 22:56 office 0 4:02:36
4 andy 12/21/2016 8:57 12/21/2016 12:15 home 0 2:59:40
我想基于该标志求和或取每个用户的时间最大值。因此,我将该列转换为timedelta。
sample.loc[:,'Time'] = pd.to_timedelta(sample['Time'])
但是,当我尝试通过累加整个列来对此进行测试时
sum(sample['Time'])
我收到以下错误:
TypeError: unsupported operand type(s) for +: 'int' and 'Timedelta'
我在这里想念什么?我以为您可以总结一下Timedelta。
Python的sum
默认情况下,假设您正在对整数求和。因此,它尝试从0
开始求和,这是该错误的来源。无法将0
添加到时间增量。
可以用两种方法解决:
为sum
提供不同的起始值,可能是“空” timedelta
,作为sum
的第二个参数:
sum
使用from datetime import timedelta
...
sum(sample['Time'], timedelta())
(无论如何可能会有更好的性能):
Series.sum