查找日期时间是星期几64

Chr*_*per 4 python datetime numpy

抱歉,这很简单,但是我在numpy文档中看不到任何内容。我有一个datetime64,我想知道是星期几。

与python不同datetimedatetime64它似乎没有.weekday()功能。但是它确实具有busday_offset()功能,这意味着它必须在幕后才能知道给定日期是星期几。任何帮助,不胜感激。

Joe*_*Joe 6

我认为你可以这样做:

import numpy as np
import datetime
t = '2018-09-19'
t = np.datetime64(t)
day = t.astype(datetime.datetime).isoweekday()
print day
Run Code Online (Sandbox Code Playgroud)

输出:

3
Run Code Online (Sandbox Code Playgroud)

  • 顺便说一句,这个答案不起作用。`numpy.datetime64('2020-10-27T22:29:00.000000000').astype(datetime.datetime).__class__` 是 `<class 'int'>` (2认同)

jwd*_*ink 6

如果您正在寻找一种真正矢量化的 numpy 方法,您可以这样做:

def day_of_week_num(dts):
    return (dts.astype('datetime64[D]').view('int64') - 4) % 7
Run Code Online (Sandbox Code Playgroud)

这有点老套,只是利用了一个事实,即numpy.datetime64s 相对于 unix 时代,即星期四。

(我不知道这是否是一个可以在不通知的情况下更改的实现细节,但您可以随时使用 进行检查assert np.zeros(1).astype('datetime64[D]') == np.datetime64('1970-01-01', 'D')。)


Iro*_*rby 5

请查看以下相关的SO问题:

获取DataFrame的Datetime列的工作日/星期几

我了解您的数据是一个numpy数组,通过熊猫将数据转换为数据框格式可能会很有用。如下所示。

import pandas as pd
df = pd.DataFrame(numpyArray)
Run Code Online (Sandbox Code Playgroud)

如果您的数据现在位于数据框中,则下面的代码(来自上面的链接)应为您提供工作日。

df['weekday'] = df['Timestamp'].dt.dayofweek
Run Code Online (Sandbox Code Playgroud)

样本输出

此外,本参考书也可能为您提供帮助。

https://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.dt.dayofweek.html