以秒为单位计算差异



我正在计算公交车预期和实际停车时间之间的时间差,以秒为单位。

我的问题是这样的:

# creating data
d = {
'time_A': ['2022-08-30 06:21:00', '2022-08-30 16:41:00'], 
'time_B': ['2022-08-30 06:21:09', '2022-08-30 16:40:16'], 
}
# creating DataFrame
my_df = pd.DataFrame(d)
my_df['time_A'] = pd.to_datetime(my_df['time_A'])
my_df['time_B'] = pd.to_datetime(my_df['time_B'])
# subtracting times
my_df['difference'] = my_df['time_B'] - my_df['time_A']
my_df

结果:

time_A  time_B  difference
0   2022-08-30 06:21:00 2022-08-30 06:21:09 0 days 00:00:09
1   2022-08-30 16:41:00 2022-08-30 16:40:16 -1 days +23:59:16

我不明白为什么今天16:40:16和今天16:41:00之间的差异是-1天+23:59:16

如果我做这个

my_df['difference'] = (my_df['time_B'] - my_df['time_A']).dt.seconds

然后我得到

time_A  time_B  difference
0   2022-08-30 06:21:00 2022-08-30 06:21:09 9
1   2022-08-30 16:41:00 2022-08-30 16:40:16 86356

我想要";差异";行O上的单元格以显示类似于"0"的内容+9〃;,下面显示"-44〃;。我该怎么做?谢谢

减去datetime.datetimes得到以这种方式表示的datetime.timedeltas,使用.total_seconds()得到秒的数值,考虑以下简单示例

import datetime
import pandas as pd
df = pd.DataFrame({"schedule":pd.to_datetime(["2000-01-01 12:00:00"]),"actual":pd.to_datetime(["2000-01-01 12:00:05"])})
df['difference_sec'] = (df['schedule'] - df['actual']).apply(datetime.timedelta.total_seconds)
print(df)

输出

schedule              actual  difference_sec
0 2000-01-01 12:00:00 2000-01-01 12:00:05            -5.0

请注意,这是datetime.timedelta的特征,它不是pandas特有的。

最新更新