我正在计算公交车预期和实际停车时间之间的时间差,以秒为单位。
我的问题是这样的:
# 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.datetime
s得到以这种方式表示的datetime.timedelta
s,使用.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
特有的。