首页 > 解决方案 > 显示最大范围熊猫的 Timedelta 计算

问题描述

嗨,伙计们,我需要计算 2 之间的 deltadatetime64[ns]

然而,这给我带来了一个最大的增量,那是可见的不真实。我不理解为什么会发生此错误,因为两个日期的格式相同。

df1=
              entrada      First_Time_log
0    2020-06-09 01:50:00 2020-06-09 03:13:22
1    2020-06-10 01:50:00 2020-06-10 02:31:31
2    2020-06-11 01:50:00 2020-06-11 02:00:07
3    2020-06-12 01:50:00 2020-06-12 03:39:59
4    2020-06-13 01:50:00 2020-06-13 04:05:28
...                  ...                 ...
4255 2020-06-02 01:50:00 2020-06-02 02:00:02
4256 2020-06-03 01:50:00 2020-06-03 02:09:16
4257 2020-06-04 01:50:00 2020-06-04 01:20:14
4258 2020-06-05 01:50:00 2020-06-05 01:11:39
4259 2020-06-06 01:50:00 2020-06-06 01:35:11 

但在应用以下操作后:

dfc['entrada-first'] = dfc['entrada'] -  dfc['First_Time_log']

它返回最大范围,因此 bitwenn 日期的范围小于 24 小时。我做错了什么?

               entrada      First_Time_log     entrada-first
0    2020-06-09 01:50:00 2020-06-09 03:13:22 -1 days +22:36:38
1    2020-06-10 01:50:00 2020-06-10 02:31:31 -1 days +23:18:29
2    2020-06-11 01:50:00 2020-06-11 02:00:07 -1 days +23:49:53
3    2020-06-12 01:50:00 2020-06-12 03:39:59 -1 days +22:10:01
4    2020-06-13 01:50:00 2020-06-13 04:05:28 -1 days +21:44:32
...                  ...                 ...               ...
4255 2020-06-02 01:50:00 2020-06-02 02:00:02 -1 days +23:49:58
4256 2020-06-03 01:50:00 2020-06-03 02:09:16 -1 days +23:40:44
4257 2020-06-04 01:50:00 2020-06-04 01:20:14          00:29:46
4258 2020-06-05 01:50:00 2020-06-05 01:11:39          00:38:21
4259 2020-06-06 01:50:00 2020-06-06 01:35:11          00:14:49

标签: pythonpandasdatedatetime

解决方案


看来您想要 timedelta 的绝对值?例如

import pandas as pd
# example df:
df = pd.DataFrame({'entrada': pd.to_datetime(['2020-06-03 01:50:00','2020-06-04 01:50:00']),
                   'First_Time_log': pd.to_datetime(['2020-06-03 02:09:16','2020-06-04 01:20:14'])})
# Python's built-in abs works fine here:
df['td_abs'] = abs(df['entrada']-df['First_Time_log'])
# df['td_abs']
# 0   00:19:16
# 1   00:29:46
# Name: td_abs, dtype: timedelta64[ns]

推荐阅读