我正在尝试用 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 小时值 但是这种提取也保留了小时分和秒值。 有人可以帮我吗?
答案 0 :(得分:0)
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))
每日 | 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 |