我的数据框包含两列:timestamp
和arrival_time
,Timestamp
和timedelta
类型:
timestamp arrival_time
0 2015-01-28 05:30:47 0 days 05:30:33.000000000
1 2015-01-28 05:31:50 0 days 05:31:00.000000000
2 2015-01-28 05:32:21 0 days 05:31:43.000000000
3 2015-01-28 05:32:53 0 days 05:31:43.000000000
4 2015-01-28 05:33:57 0 days 05:32:58.000000000
5 2015-01-28 05:34:28 0 days 05:33:39.000000000
6 2015-01-28 05:35:00 0 days 05:34:23.000000000
7 2015-01-28 05:35:31 0 days 05:34:23.000000000
8 2015-01-28 05:36:02 0 days 05:36:00.000000000
9 2015-01-28 05:36:34 0 days 05:36:00.000000000
10 2015-01-28 05:37:07 0 days 05:36:38.000000000
11 2015-01-28 05:37:38 0 days 05:36:38.000000000
12 2015-01-28 05:38:41 0 days 05:39:00.000000000
13 2015-01-28 05:39:13 0 days 05:39:00.000000000
14 2015-01-28 05:39:44 0 days 05:40:12.000000000
我想找到两者的平均差异。但是,简单的减法会导致行12
等行出现问题:它会正确返回23:59:41
。但我希望它返回一个负值(即-00:00:19
)或类似的那样。
我应该完全将其类型从日期更改为整数还是有更好的解决方案?
编辑:当差异超过一天时,它再次变得怪异:
3694 2015-01-29 01:10:27 1 days 01:11:27
现在它返回
3694 -2 days +23:59:00
应该返回-00:01:00
答案 0 :(得分:1)
根据评论编辑 如果我正确阅读,你基本上想知道每个时间戳中相对于一天开始的时差。我在这里设置了一个测试用例并提供了另一段代码。如果我们现在在同一页面,请告诉我。
In [123]: test_df
Out[123]:
timestamp arrival_time
0 2015-01-28 05:30:47 05:31:34
In [124]: test_df.dtypes
Out[124]:
timestamp datetime64[ns]
arrival_time timedelta64[ns]
dtype: object
In [125]: test_df['result'] = (test_df['timestamp'] - test_df['arrival_time']) - test_df['timestamp'].apply(pd.Timestamp.date).apply(pd.Timestamp)
In [126]: test_df
Out[126]:
timestamp arrival_time result
0 2015-01-28 05:30:47 05:31:34 -00:00:47