gpt4 book ai didi

python - numpy 日期时间和 Pandas 日期时间

转载 作者:行者123 更新时间:2023-12-04 18:00:34 31 4
gpt4 key购买 nike

我对 numpy 和 pandas 日期对象之间的互操作感到困惑(或者可能只是 numpy 的 datetime64 一般)。

我试图使用 numpy 的内置功能来计算工作日,如下所示:

np.busday_count("2016-03-01", "2016-03-31", holidays=[np.datetime64("28/03/2016")])

但是,numpy 显然无法处理倒转日期格式:
ValueError: Error parsing datetime string "28/03/2016" at position 2

为了解决这个问题,我想我只需要使用pandas to_datetime,就可以了。然而:
np.busday_count("2016-03-01", "2016-03-31", holidays=[np.datetime64(pd.to_datetime("28/03/2016"))])

ValueError: Cannot safely convert provided holidays input into an array of dates

搜索了一下,似乎这是由于 to_datetime 和 np.datetime64 的链接导致 datetime64[us] 的事实引起的。对象,这显然是 busday_count函数不能接受(这是预期的行为还是错误?)。因此,我的下一次尝试是:
np.busday_count("2016-03-01", "2016-03-31", holidays=[np.datetime64(pd.Timestamp("28"), "D")])

但:
TypeError: Cannot cast datetime.datetime object from metadata [us] to [D] according to the rule 'same_kind'

这就是我 - 为什么所有这些日期时间格式之间有这么多的不兼容?我怎样才能绕过它们?

最佳答案

我一直有类似的问题,使用 np.is_busday()

datetime64 的类型对于正确处理至关重要。检查 numpy datetime 文档,您可以将 numpy datetime 类型指定为 D。

这有效:

my_holidays=np.array([datetime.datetime.strptime(x,'%m/%d/%y') for x in holidays.Date.values], dtype='datetime64[D]')

day_flags['business_day'] = np.is_busday(days,holidays=my_holidays)

而这会引发与您相同的错误:
my_holidays=np.array([datetime.datetime.strptime(x,'%m/%d/%y') for x in holidays.Date.values], dtype='datetime64')

唯一的区别是指定 datetime64 的类型。
dtype='datetime64[D]'

对比
dtype='datetime64'

文档在这里:

https://docs.scipy.org/doc/numpy-1.13.0/reference/arrays.datetime.html

关于python - numpy 日期时间和 Pandas 日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36081487/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com