TypeError使用timedelta,不能求和时间

问题描述 投票:1回答:1

我有看起来像这样的数据:

    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 pandas timedelta
1个回答
3
投票

Python的sum默认情况下,假设您正在对整数求和。因此,它尝试从0开始求和,这是该错误的来源。无法将0添加到时间增量。

可以用两种方法解决:

  • sum提供不同的起始值,可能是“空” timedelta,作为sum的第二个参数:

    sum
  • 使用from datetime import timedelta ... sum(sample['Time'], timedelta()) (无论如何可能会有更好的性能):

    Series.sum
© www.soinside.com 2019 - 2024. All rights reserved.