Pandas 熊猫体内两个时间戳的差异

Pandas 熊猫体内两个时间戳的差异,pandas,datetime-format,timespan,Pandas,Datetime Format,Timespan,我有以下两个时间列,“Time1”和“Time2”。我必须计算“差”列,即熊猫中的(Time2-Time1): Time1 Time2 Difference 8:59:45 9:27:30 -1 days +23:27:45 9:52:29 10:08:54 -1 days +23:16:26 8:07:15 8:07:53 00:

我有以下两个时间列,“Time1”和“Time2”。我必须计算“差”列,即熊猫中的(Time2-Time1):

Time1         Time2                 Difference
8:59:45       9:27:30               -1 days +23:27:45
9:52:29       10:08:54              -1 days +23:16:26
8:07:15       8:07:53               00:00:38
当Time1和Time2在不同的小时内时,我得到的结果是“-1天+”。我对前两个值的期望输出如下所示:

Time1         Time2                 Difference
8:59:45       9:27:30               00:27:45
9:52:29       10:08:54              00:16:26
如何以熊猫为单位获得此输出


这两个时间值均为“datetime64[ns]”数据类型。

我无法使用pandas 17.1再现该问题:

import pandas as pd

d = {
    "start_time": [
        "8:59:45",
        "9:52:29",
        "8:07:15"
    ],
    "end_time": [
        "9:27:30",
        "10:08:54",
        "8:07:53"
    ]
}

from datetime import  datetime
df = pd.DataFrame(data=d)
df['start_time'] = pd.to_datetime(df['start_time'])
df['end_time'] = pd.to_datetime(df['end_time'])

df.end_time - df.start_time

0   00:27:45
1   00:16:25
2   00:00:38
dtype: timedelta64[ns]

问题不是
time1
time2
在不同的时间,而是
time2
time1
之前,所以
time2-time1
是负数,这就是负数时差的存储方式。如果您只想将分钟差作为负数,可以在计算差之前提取分钟数:

(df.Time1.dt.minute- df.Time2.dt.minute)

我没有你的问题。您能否提供一种方法来生成重现问题的数据帧?另外,您是否关心差异的格式,或者字符串是否起作用?我认为这是重复的:或者您不是只是做了
Time1-Time2
而不是
Time2-Time1
?否则可能会有帮助。@Ian:不,我尝试了Time2-Time1来处理整个列。无论Time2和Time1的时间不同,我都会得到相同的结果。你建议的参考问题没有帮助。你能发布你的代码吗?这不准确
df.Time.dt.minute
返回
datetime.Time
对象的分钟组件。例如,如果
time1
datetime.time(09,56,36)
,那么分钟的值是
56
。现在,如果你要减法的另一个时间是一小时或更长,减法将不会返回正确的结果。例如
datetime.time(8,56,6).minute-datetime.time(7,56,6).minute
返回
0
minutes差,而预期结果是
60