【问题标题】:cast a date as a date in pandas在熊猫中将日期转换为日期
【发布时间】:2021-09-16 04:28:29
【问题描述】:

我正在尝试用 python 语言编写 SQL 代码:

datediff(mi, cast(tab.[Daily] as date), tab.[Daily]) / 3 as [date_diff]

每日格式为 yyyy-mm-dd HH:MM:SS

在sql中这段代码计算某个日期的午夜和该行的日期之间的3分钟间隔的差异。

我想在 python 中应用相同的概念。但我不知道是否有办法自动提取某个日期的午夜,尽管它的值。

例子:

           Daily          date_diff
    2020-12-01 00:00:00       0
    2020-12-01 00:03:00       1
    2020-12-01 00:06:00       2
    2020-12-01 00:09:00       3
    2020-12-01 00:12:00       4
    2020-12-01 00:33:00      11
    2020-12-01 00:36:00      12
    2020-12-01 00:39:00      13
    2020-12-01 00:42:00      14
    2020-12-01 00:45:00      15

所以我需要类似的东西:

tab['date_diff'] = (tab['Daily'].dt.minute - tab['ts180']. **MIDNIGHT OF THE DATE IN tab['DailY']** )/3

我试过了:

```tab['Midnight'] = pd.to_datetime(tab['Daily'], format = "%Y-%m-%d 00:00:00" )```

但它会用它们的值提取小时分钟和秒。 所以我尝试只提取日期

```tab['Midnight_date'] = pd.to_datetime(tab['Daily'], format = "%Y-%m-%d" )```

尝试将它与我使用 00:00:00 为小时值创建的时间列连接起来 但是这种提取也保留了小时分钟和秒的值。 有人可以帮我吗?

【问题讨论】:

    标签: sql pandas datetime casting


    【解决方案1】:
    • 这实际上是Timedelta 的用例
    • 生成了一个与您包含的数据集相似的数据集
    • 重要的列是 Timedelta 工作的日期时间
    • 每次减去参考时间形式并转换为所需单位
    import numpy as np
    # generate some data at 3 min intervals and drop some randomly (not first row)
    df = pd.DataFrame({"Daily":pd.date_range("1-dec-2020", freq="3min", periods=15)}).drop(np.random.randint(1,15,5))
    
    # use first row as reference time.  want 3 min intervals so 60*3
    df.assign(date_diff=(df["Daily"]-df.loc[0,"Daily"]).dt.seconds//(60*3))
    
    
    Daily date_diff
    0 2020-12-01 00:00:00 0
    1 2020-12-01 00:03:00 1
    2 2020-12-01 00:06:00 2
    3 2020-12-01 00:09:00 3
    6 2020-12-01 00:18:00 6
    7 2020-12-01 00:21:00 7
    8 2020-12-01 00:24:00 8
    9 2020-12-01 00:27:00 9
    13 2020-12-01 00:39:00 13
    14 2020-12-01 00:42:00 14

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-05
      • 2015-09-19
      • 2017-03-05
      • 2018-08-09
      • 2021-12-06
      • 1970-01-01
      • 1970-01-01
      • 2014-02-23
      相关资源
      最近更新 更多