【问题标题】:Subtracting the difference between 2 dates Pandas Python减去两个日期之间的差异 Pandas Python
【发布时间】:2022-02-21 15:29:35
【问题描述】:

我想编写一段代码来返回 backtest_resultsrealtime_test 的值之间不同的天数小时分钟数。所以我要执行2022-01-24 10:05:00 - 2022-01-30 14:09:03, 2022-01-27 01:54:00 - 2022-02-02 09:34:06

backtest_results[0] - realtime_test[0]
backtest_results[1] - realtime_test[1]
...

我如何才能对下面想要的代码进行顶部编码。

import pandas as pd 
import numpy

backtest_results = pd.to_datetime(['2022-01-24 10:05:00', '2022-01-27 01:54:00', 
                     '2022-01-30 19:08:00','2022-02-02 14:32:00',
                     '2022-02-10 02:58:00', '2022-02-10 14:01:00',
                     '2022-02-11 00:25:00' '2022-02-16 13:49:00'])
    
realtime_test = pd.to_datetime([
                '2022-01-30 14:09:03', '2022-02-02 09:34:06',
                '2022-02-08 07:37:03', '2022-02-09 22:07:02',
                '2022-02-10 09:02:03', '2022-02-10 19:32:25',
                '2022-02-12 16:42:03', '2022-02-15 23:19:03'])
result = backtest_results - realtime_test

【问题讨论】:

  • 你的代码是正确的,只是backtest_results的值没有加逗号

标签: python python-3.x pandas date datetime


【解决方案1】:

您在最后一行的backtest_results 中缺少逗号:

backtest_results = pd.to_datetime(['2022-01-24 10:05:00', '2022-01-27 01:54:00', 
                     '2022-01-30 19:08:00','2022-02-02 14:32:00',
                     '2022-02-10 02:58:00', '2022-02-10 14:01:00',
                     '2022-02-11 00:25:00', '2022-02-16 13:49:00'])
                                          ^^ here

然后,您可以简单地从另一个中减去一个。

如果您想要原始差异:

>>> backtest_results - realtime_test
TimedeltaIndex(['-7 days +19:55:57', '-7 days +16:19:54', '-9 days +11:30:57',
                '-8 days +16:24:58', '-1 days +17:55:57', '-1 days +18:28:35',
                '-2 days +07:42:57',   '0 days 14:29:57'],
               dtype='timedelta64[ns]', freq=None)

如果你想得到不同的是天数:

>>> (backtest_results - realtime_test).astype('timedelta64[D]')
Float64Index([-7.0, -7.0, -9.0, -8.0, -1.0, -1.0, -2.0, 0.0], dtype='float64')

如果你想以小时为单位:

>>> (backtest_results - realtime_test).astype('timedelta64[h]')
Float64Index([-149.0, -152.0, -205.0, -176.0, -7.0, -6.0, -41.0, 14.0], dtype='float64')

如果您想要以分钟为单位的差异:

>>> (backtest_results - realtime_test).astype('timedelta64[m]')
Float64Index([-8885.0, -9101.0, -12270.0, -10536.0, -365.0, -332.0, -2418.0, 869.0], dtype='float64')

【讨论】:

    【解决方案2】:
    df['diff'] = df.EndDate - df.StartDtate
    df.diff = df.diff / np.timedelta64(1. 'D')
    

    “D”代表日,“W”代表周,“M”代表月,“Y”代表年

    【讨论】:

      猜你喜欢
      • 2016-10-01
      • 1970-01-01
      • 2012-01-15
      • 1970-01-01
      • 1970-01-01
      • 2011-10-29
      • 1970-01-01
      • 1970-01-01
      • 2012-10-23
      相关资源
      最近更新 更多