python - 将 N 个工作日添加到不是单位 'D' 的 Numpy datetime64

标签 python datetime pandas numpy numpy-ufunc

我正在尝试将工作日添加到当前格式为 datetime64 对象但类型为 'ns' 的一长串数据中。

根据 Numpy documentation , busday_offset 函数仅适用于单位为 'D' 的对象。我想要的功能存在于 Pandas 中,使用“BusinessDayintseries.offsets”。

我可以将每个日期转换为 Pandas Timestamp,然后添加偏移量,然后再转换回来,但这感觉工作量比应有的多。

有没有办法直接将任意数量的工作日添加到具有 'ns' 单位的 datetime64 对象?

最佳答案

使用 pandas 更容易,但这里是一个 numpy 实现。我最初从 Pandas 创建日期,但这不是必需的。任何具有 ns 精度的 numpy 日期都应该有效。

# get numpy only business days from pandas
pandas_dates = pd.date_range('today', periods=10, freq='B')
np_dates = pandas_dates.values

# Just get the day part
np_days = np_dates.astype('datetime64[D]')

# offset date using numpy and then convert back to ns precision.
# all seconds will be 0
np_day_offsets = np.busday_offset(np_days, 5).astype('datetime64[ns]')

# add back in nanoseconds
np_final = np_day_offsets + (np_dates - np_days)

关于python - 将 N 个工作日添加到不是单位 'D' 的 Numpy datetime64,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41273824/

相关文章:

python - 是否有任何函数可以将数据帧列中的数字与一系列数字进行比较?

python - 如何从日期时间对象中仅提取月份和日期?

python - 通过ffmpeg(python3.9)制作动画时出错

python - 当我尝试从 linux 机器到 windows ssh 客户端服务器时,来自 pexpect (pxssh) 的 SSH 失败

mysql。如何选择每小时的最后日期

mysql - 如何在持续时间 mysql 中从 1 获取两行?

php - Mysql、PHP 和 UTC_TIMESTAMP()

python - 用于加载嵌套在 JSON 文件的嵌套键中的语法

python - 按日期范围内的日期计算对象数量

python - arrow_table = pa.Table.from_pandas(df) ... 将 Python 对象转换为 String/UTF8 时出错